我有这个型号:
self.model {
items: {
Number: ko.observable(),
Name: ko.observable(),
NumberTwo: ko.computed(function () {
return self.model.items.Number();
})
}
}
我需要使用NumberTwo
上的值初始化Number
,因此我创建了一个计算的observable,但它在return
行上给出了一个错误。这有什么不对吗?可能是因为我没有正确引用可观察的Number
?
答案 0 :(得分:0)
作为@ RoyJ的答案的替代方案,我更喜欢使用构造函数模式,这种模式与使用OO语言中的类类似。例如:
var Items = function() {
var self = this;
self.number = ko.observable();
self.name = ko.observable();
self.numberTwo = ko.computed({
read: function() {
return self.number();
},
write: function(newValue) {
console.log(newValue); // Or whatever
self.number(newValue);
}
});
};
var Model = function() {
var self = this;
self.items = new Items();
};
var Root = function() {
var self = this;
self.model = new Model();
};
ko.applyBindings(new Root());
明智地命名约定,我建议使用PascalCase作为构造函数,使用camelCase作为成员和变量。
使用此模式,您可以更加强大,numberTwo
封装在Items
视图模型中,而无需在$parent
树中引用两个步骤即可访问兄弟姐妹number
。