为什么在 1、2、3 种情况下更改服务中的消息不会影响显示的消息?
var app = angular.module('app', []);
app.factory('Message', function() {
return {message: "why this message doesn't changed"};
});
app.controller('Changer', function($scope, Message) {
Message.message = "first" // (1)
$scope.changeItems = function() {
Message.message = "second" // (2)
}
});
app.controller('Listener', function($scope, Message) {
$scope.message = Message.message
Message.message = "third" // (3)
});
我的观点:
<div ng-controller="Listener">
{{ message }}
</div>
<div ng-controller="Changer">
<button ng-click="changeItems()">change message</button>
</div>
我还在 plunkr http://plnkr.co/edit/BUPS6U0S7ktDEkH9dZTZ?p=preview 上创建了示例
最佳答案
原因是“Listener” Controller 首先启动,因为它首先出现在 View 的 HTML 上。如果您切换顺序,您将看到“第一条”消息。
还有一件事,当您设置对字符串的引用并随后更改该字符串时,您会丢失该引用,这就是为什么引用一个对象然后像这样呈现该对象的属性会更强大:
Controller :
$scope.Message = Message
查看:
{{Message.message}}
这样你就不会丢失引用
关于javascript - AngularJs监听服务的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16112532/