API からデータを取得するサービスを使用しています。
angular.module('myApp', [])
.factory('myService', function($q, $timeout) {
var getMessages = function() {
var deferred = $q.defer();
$timeout(function() {
deferred.resolve('Hello world!');
}, 2000);
return deferred.promise;
};
return {
getMessages: getMessages
};
});
そして、これらのデータを複数のコントローラーで使用します。
function ControllerA($scope, myService) {
$scope.message = myService.getMessages();
$scope.updateMessage = function(){
$scope.message = 'Hello Max';
};
}
function ControllerB($scope, myService) {
$scope.message = myService.getMessages();
$scope.$watch('message', function(){
// 'Hello Max'
}, true);
}
すべてのコントローラーでデータを更新したいのですが、ControllerA で $scope.message を変更しても、ControllerB で変更が発生しません。
編集:「$broadcast」と「$on」の使用を避けたいということです。
何か案は?
ここに jsfiddle があります: http://jsfiddle.net/Victa/McLQD/