为什么针对工厂的Angular数据绑定只适用于函数
Why does Angular databinding against factories only work with functions?
我有以下代码:
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>
问题是,当我运行change和revert方法时,只有"message3"属性会更改,有人能解释为什么只有那个更改吗?我读到一些关于angular只能对基元进行数据绑定的文章,这是怎么回事?还有没有更好的方法可以在不绑定函数的情况下将视图值数据绑定到工厂?
您正在controller.message1和controller.mmessage2中设置值的副本。在controller.message3()中,您实际上正在对消息执行get访问器,并获取最新值的副本。
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- Telerik rad组合框多列数据绑定
- 数据绑定:'系统Char'不包含名为'xxxxx'
- OnsenUI AngularJS数据绑定无法正常工作
- Ionic-item在导航栏中进行双向数据绑定
- 基本D3.js:如何将具有其他属性的数据绑定到元素
- 使用自定义数据属性或将数据绑定到处理程序来处理事件
- ListView的ItemTemplate内的自定义HtmlControl的数据绑定失败
- $http中的Angular 1数据绑定承诺不起作用
- AngularJs 双向数据绑定不适用于自定义指令输入元素
- 双向数据绑定不适用于 Internet Explorer 9 中的自定义指令
- 用于模板数据绑定的聚合物回调
- Vue.js双向数据绑定不适用于Select元素
- 如何为Breeze创建数据绑定适配器
- 用于击倒数据绑定列表的引导弹出窗口
- 在Angular.js中,双向数据绑定不能用于指令
- AngularJs指令:value from cookie不适用于数据绑定
- 通过属性更改进行的双向数据绑定不适用于dom-bind
- 角度数据绑定不适用于Jade
- Meteor用于表单验证的双向数据绑定