【发布时间】:2015-07-12 15:27:12
【问题描述】:
我正在向我的页面添加自定义绑定。在其中,我想将我创建的对象之一保存为 viewModel 的属性。当我这样做时,当我尝试在绑定之外访问它时,我会得到“未定义”。为什么?这是一个简化的示例:
HTML:
<div id = "myDiv" data-bind = "fooAdd: myFoo"></div>
JavaScript:
ko.bindingHandlers.fooAdd = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
var foo = 1;
viewModel._foo = foo;
}
};
var ViewModel = function(){
var self = this;
self.myFoo = ko.observable({});
console.log(self); //Here I can expand the object returned in
//the console and see that _foo is equal to 1.
console.log(self._foo); //returns undefined
};
ko.applyBindings(new ViewModel());
【问题讨论】:
-
有什么理由让您期望在构造函数完成之前设置
_foo?您可以在控制台中“扩展”对象并查看_foo的原因是因为您正在打印整个对象(大多数调试器会保持最新),因此在它记录自定义绑定后的几毫秒内应用并且属性已设置。
标签: javascript mvvm knockout.js