私は異なるコントローラを持つAngularJSアプリケーションを持っています。角度、工場からのオブジェクトは参照されていません
これらのコントローラは、データの一部を共有しなければならないと私はそのための工場を使用するのではと思った:私のコントローラで
angular.module('myApp').factory('myService', ['$http', 'dataService' function ($http, dataService) {
var sharedData = {
myData: null
};
var _loadData = function(){
dataService.getData().then(
function (response) {
this.sharedData.myData = response.data;
},
function (response) {
//error-message
}
);
};
return {
myData : sharedData,
initData: _loadData()
};
}]);
を私は設定して取得したい、このようなデータ:
$scope.init = function(){
$scope.myData = myService;
myService.initData();
};
もちろんinitは1つのコントローラでのみ実行されます。
悲しいことに、悲しいことに、データがdataServiceから正しく受信されても、これは機能しません。
私は工場のすべてにそれ安全なその後、私のコントローラでのDataServiceを呼び出すと場合、期待どおりに動作します
$scope.init = function(){
$scope.myData = myService;
dataService.getData().then(
function (response) {
myService.myData = response.data;
},
function (response) {
//error-message
}
);
};
なぜそれが起こるのでしょうか?どのように私は工場にクエリロジックを移動し、変更するたびにすべての再描画コントローラで更新されるsharedDataオブジェクトへの参照を持っていますか?