我有以下代码:
var ObjectViewModel = function (testObject) {
//debugger;
var self = this;
self.id = testSet.id;
self.details = testOject.details;
self.children = ko.observableArray(testObject.children);
self.childCount = ko.computed(function() {
return self.children().length;
});
self.addObject = function () {
//debugger;
// Pending UI
// Call API here
// On success, complete
self.children.push(dummyObject);
self.childToAdd("");
}.bind(self);
}
/ etc
但是在childCount中,this.children()未定义。我试图让视图实时显示子数组的长度,因此当用户添加/删除项时,计数会更新。知道为什么这不起作用吗?
答案 0 :(得分:2)
您可以使用最后一个参数将执行函数时this
的值传递给计算函数:
this.childCount = ko.computed(function() {
return this.children().length;
}, this);
您还可以在计算值
之外存储对this
的引用
var self = this;
this.childCount = ko.computed(function () {
return self.children().length;
});