我有一个问题,我有一个暴露字符串的服务。这个服务有一个函数来更新字符串的值。该服务内部知道该值已更改,但是,从外部看,该值从不更新。AngularJS - 暴露字符串的服务
如果我将字符串嵌套在对象中,那么它都可以工作,但我并不想嵌套它。
任何人都可以解释为什么发生这种情况?这感觉就像它应该工作,感觉就像我缺少一些基本的东西。
服务:
myApp.service('neverChanges', function() {
var id = 'Hello';
var changeId = function() {
console.log('pre change:' + id);
id = 'World';
console.log('post change:' + id);
};
return {
id: id,
changeId: changeId
};
});
控制器:
myApp.controller('Controller1', ['neverChanges', function (neverChanges) {
this.idValue = function() {
return neverChanges.id;
}
this.clickHandler = function() {
console.log('Trust me, I did fire...');
neverChanges.changeId();
console.log('external post change:' + neverChanges.id);
};
}]);
标记:
<div ng-app="myApp">
<div ng-controller="Controller1 as vm">
<h3>This will never change:</h3>
<button ng-click="vm.clickHandler()">Click Me!</button>
<p>Values:</p>
<p>id: {{vm.idValue()}}</p>
</div>
小提琴显示了两种方案:http://jsfiddle.net/KyleMuir/2nhoc2rz/
小心解释downvote? – 2014-09-26 21:26:18