以下の不自然な例で、共有サービスを使用して 2 つの AngularJS コントローラー間でデータを共有する方法を理解しました。
(機能しているフィドル)
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
) から取得したいということです。
ファクトリ関数で Ajax 呼び出しを実行しようとしましたUserData
が、非同期で実行されMainCtrl
ているため、サービスに実際にデータが含まJobListCtrl
れる前に実行されます。UserData
誰かがそれを設定する方法について私に指示を与えることができますか?