KnockoutJS内可观察到可观察到的计算(KnockoutJS computed observa

2019-10-19 06:07发布

我有一个包含以下观察到一个视图模型:

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的?

Answer 1:

最简单的方法是创建你的对象适当的构造函数:

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 。



Answer 2:

或者你可以这样做:

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();


文章来源: KnockoutJS computed observable within an observable