使用Knockout ES5进行子观察

Kye*_*ica 6 knockout.js knockout-es5-plugin

Ryan N在一些 帖子中使用了一种他称之为"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"
Run Code Online (Sandbox Code Playgroud)

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

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

mrt*_*tig 1

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

function complexObservable(value, parent) {
    self = this;
    self.value = ko.observable(value); 
    self.parent = parent;
}
Run Code Online (Sandbox Code Playgroud)

然后在你的主视图模型中你可以有:

var parent = ko.observable("I'm the parent");
parent.sub = ko.observable(new complexObservable("I'm the child", parent));
Run Code Online (Sandbox Code Playgroud)