我有一个包含以下观察到一个视图模型:
self.obFoo = ko.observable({
foo: ko.observable(""),
bar: ko.observable("")
});
现在我想一个新的计算观察到的增加obFoo取决于两个foo和酒吧,是这样的:
self.obFoo = ko.observable({
foo: ko.observable(""),
bar: ko.observable(""),
foobar: ko.computed(function(){
return foo() + bar();
})
});
的问题是,foo和bar不foobar的的范围内限定。 我尝试添加“这个”甚至“self.obFoo”作为第二个参数来计算的,但既不工作。
有没有一种方法可以得到正确的范围为计算foobar的?
最简单的方法是创建你的对象适当的构造函数:
var MyObject = function(){
this.foo = ko.observable("foo");
this.bar = ko.observable("barr");
this.foobar = ko.computed(function(){
return this.foo() + this.bar();
}, this);
}
并使用构造函数来创建对象,而不是对象字面的:
var ViewModel = function () {
var self = this;
self.obFoo = ko.observable(new MyObject());
}
演示的jsfiddle 。
或者你可以这样做:
var o={
foo: ko.observable(""),
bar: ko.observable("")
};
o.foobar= ko.computed(function(){
return o.foo() + o.bar();
});
self.obFoo = ko.observable(o);
self.obFoo().foobar();