javascript - 在 AngularJS Controller 之间共享数据,但共享数据来自 Ajax 调用

标签 javascript angularjs

在下面这个人为设计的示例中,我已经弄清楚了如何使用共享服务在两个 AngularJS Controller 之间共享数据:

(功能fiddle)

var app = angular.module('myApp', []);

app.factory('UserData', function() {
    var data = {foo: 'bar'};

    return {
        getData: function() {
            console.log('getData');
            return data;
        },
        setData: function(newData) {
            data = newData;
        }
    };
});

function MainCtrl($scope, UserData) {
    console.log('MainCtrl');
    console.log(UserData.getData());
}
MainCtrl.$inject = ['$scope', 'UserData'];

function JobListCtrl($scope, UserData) {
    console.log('JobListCtrl');
    console.log(UserData.getData());
}
JobListCtrl.$inject = ['$scope', 'UserData'];

我的问题是我希望 UserData 中保存的数据来自 Ajax 调用(可能使用 $http)。

我尝试在 UserData 工厂函数中执行 Ajax 调用,但由于它是异步运行的,因此 MainCtrlJobListCtrlUserData服务实际上有任何数据在里面。

有人可以指导我如何设置吗?

最佳答案

我创建了这个示例,展示了如何在不同 Controller 之间获取、存储和共享数据(模型),而不会失去其可绑定(bind)功能。

实例: http://pablodenadai.github.io/SharingModelsAngularJS/

源代码 1:(资源和模型抽象)https://github.com/pablodenadai/SharingModelsAngularJS/blob/master/app/scripts/controllers/main.js

repo : https://github.com/pablodenadai/SharingModelsAngularJS

希望对您有所帮助。

关于javascript - 在 AngularJS Controller 之间共享数据,但共享数据来自 Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15097961/

相关文章:

javascript - 提交后如何重定向

javascript - JavaScript 中的代码finally block 和try ... catch 之后的区别

javascript - AngularJS:在 <li></li> 上使用 ng-repeat 并调用 ng-click 的不同函数?

javascript - 使用 Angular 将嵌套 JSON 文件加载到 UI 网格表中

javascript - 来自 http get 的平均返回值

angularjs - Ionic 2 和收藏重复

javascript - 错误类型错误 : Cannot read property 'list' of undefined

javascript - 自动按下按键的功能Javascript

javascript - 清除数组后不会更新 ng-options 绑定(bind)变量

javascript - D3 交错动画