我有一個問題,我有一個暴露字符串的服務。這個服務有一個函數來更新字符串的值。該服務內部知道該值已更改,但是,從外部看,該值從不更新。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