使用Knockout ES5进行子观察

时间:2014-01-30 21:44:58

标签: knockout.js knockout-es5-plugin

Ryan N在couple posts中使用了一种他称之为“sub-observables”的技术,在那里他将可观察量挂在“父”可观察量之上。它看起来像这样:

var parent = ko.observable("I'm the parent");
parent.sub = ko.observable("I'm the child");

parent()        //="I'm the parent"
parent.sub()    //="I'm the child"

这是一种非常方便的技术,我在几个扩展器中使用它。使用Knockout ES5插件,除非您在viewmodel上调用get getObservable(),否则看起来无法访问。在绑定中,这看起来很难看,但有时你只是无法访问父对象所附加的对象。

是否存在用于创建和访问子可观察量的ES5兼容方法?

1 个答案:

答案 0 :(得分:1)

您可以尝试为可观察的层次结构创建一个新类:

function complexObservable(value, parent) {
    self = this;
    self.value = ko.observable(value); 
    self.parent = parent;
}

然后在您的主视图模型中,您可以:

var parent = ko.observable("I'm the parent");
parent.sub = ko.observable(new complexObservable("I'm the child", parent));