컨트롤러간에 비동기 데이터의 "변경 사항을 바인딩"하고 싶습니다.각도 : 컨트롤러간에 비동기 서비스 데이터 공유
아마도 조금 혼란 스럽 겠지만 뭔가 가능할 수 있기를 바랍니다. 내가 입력 뭔가를 작성하는 경우 다음과 같은 예에서
, 그것은 잘 작동 : http://jsfiddle.net/Victa/9NRS9/
HTML :
<div ng-app="myApp">
<div ng-controller="ControllerA">
ControllerA.message = {{message.hello}}<br/>
<input type="text" ng-model="message.hello"/>
</div>
<hr/>
<div ng-controller="ControllerB">
ControllerB.message = {{message.hello}}<br/>
<input type="text" ng-model="message.hello"/>
</div>
</div>
JS :
angular.module('myApp', [])
.factory('myService', function($q, $timeout) {
var message = {
hello: 'hello world'
};
return {
getMessage : function(){
return message;
}
};
})
function ControllerA($scope, myService) {
$scope.message = myService.getMessage();
}
function ControllerB($scope, myService) {
$scope.message = myService.getMessage();
}
하지만 서버에서 내 데이터를 가져옵니다. 위의 예와 같이 데이터를 "링크"하고 싶습니다. http://jsfiddle.net/Victa/j3KJj/
"$ broadcast"/ "$ on"을 사용하거나 $ rootScope에서 객체를 공유하는 것을 피하고 싶습니다.
HTML :
<div ng-app="myApp">
<div ng-controller="ControllerA">
ControllerA.message = {{message.hello}}<br/>
<input type="text" ng-model="message.hello"/>
</div>
<hr/>
<div ng-controller="ControllerB">
ControllerB.message = {{message.hello}}<br/>
<input type="text" ng-model="message.hello"/>
</div>
</div>
JS : 당신의 도움에 대한
angular.module('myApp', [])
.factory('myService', function($q, $timeout) {
var message = {};
return {
getMessage : function(){
var deferred = $q.defer();
$timeout(function() {
message.hello = 'Hello world!';
deferred.resolve(message);
}, 2000);
return deferred.promise;
}
};
})
function ControllerA($scope, myService) {
$scope.message = myService.getMessage();
}
function ControllerB($scope, myService) {
$scope.message = myService.getMessage();
}
감사합니다.
빅터
내 대답은 어디에 있습니까 ?? 나는 이미 그것에 대답했다고 생각했다. – zsong
@ sza 귀하의 도움을 주셨습니다 만, rootScope 또는 $ broadcast/$ on을 사용하는 것은 대규모 어플리케이션에서 쉽지 않습니다. – Vic