angularjs - 在 AngularJS 服务中阻止 $http?

标签 angularjs

假设我有一个站点,其中每个 Controller 都将依赖于“用户”对象。所以我为 Controller 创建了一个用户服务来获取这些数据:

myApp.factory('UserService', function ($http) {
    var user = { Id: 1, Name: 'Test' }; 
    return {
        User: user
    };
});

我的 Controller 看起来像这样:

myApp.controller('SearchController', function ($scope, UserService) {
    $scope.User = UserService.User;
})

我的问题是,假设现在我们需要从 $http 调用中提取数据(然后在传递给 Controller ​​之前对返回的数据进行操作)并且几乎每个 Controller 都在进行需要这些数据(所以让他们每个人都操纵它没有意义),我该如何实现它?

我将围绕有关 promises 的示例进行循环,因此我对处理此问题的正确方法感到困惑。理想情况下,我只需要一种方法在填充任何 Controller / View 之前解析此数据

最佳答案

我会避免让服务做这样的事情,因为让服务保持状态通常是不好的形式(这是有争议的Should an Angular service have state?)

我在我最近的应用程序中解决了这个问题,方法是在获取用户的根作用域上创建一个函数,并在我需要了解用户时调用该函数。

关于angularjs - 在 AngularJS 服务中阻止 $http?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20887853/

相关文章:

javascript - AngularJS 选择具有自动完成功能

angularjs - 在Angular Dart组件中使用 bool 属性

javascript - 如何在 Angular 中显示小数点后 2 位数字,但将其存储在小数点后 4 位

javascript - 单击“提交”按钮后刷新/重新渲染 UI

angularjs - 如何使用反向代理处理 Express 应用程序中的重定向

rest - AngularJS 和休息服务

javascript - 在 ng-repeat 中使用 AngularJS 为按钮设置动画

javascript - 如何根据用户在angularjs中的角色显示不同的菜单项?

javascript - 未捕获的类型错误 : Cannot set property offsetWidth of#<HTMLElement> which has only a getter

javascript - Angularjs 如何显示列表框中所选行的隐藏数据?