我有以下代码:
angular.module('app')
.controller('controller', controller)
.factory('storageFactory', storageFactory);
function storageFactory() {
var message;
_message = "Message # 1";
return {
message: {
get: function() {
return _message;
},
set: function(value) {
_message = value;
},
value: _message
}
}
}
controller.$inject = ['storageFactory'];
function controller(storage) {
var viewModel = this;
viewModel.message1 = storage.message.value;
viewModel.message2 = storage.message.get();
viewModel.message3 = storage.message.get;
viewModel.change = change;
viewModel.revert = revert;
function change() {
storage.message.set("Message # 2");
}
function revert() {
storage.message.set("Message # 1");
}
}
我有以下 html:
<label>{{controller.message1}}</label>
<label>{{controller.message2}}</label>
<label>{{controller.message3()}}</label>
问题是,当我运行更改和恢复方法时,只有“message3”属性发生变化,有人可以解释为什么只有那个属性发生变化吗?我读到一些关于 Angular 只能针对基元进行数据绑定(bind)的内容,这有多真实?有没有更好的方法将 View 值数据绑定(bind)到工厂而不绑定(bind)函数?
最佳答案
您正在设置controller.message1和controller.message2中值的副本。在controller.message3()中,您实际上是在消息上执行get访问器并获取最新值的副本。
关于javascript - 为什么针对工厂的 Angular 数据绑定(bind)只能与函数一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29288786/