6

Ryan N 在几篇 文章中使用了一种他称之为“子可观察对象”的技术,他将可观察对象挂在“父”可观察对象上。它看起来像这样:

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 插件,除非您在视图模型上调用 get,否则它看起来将无法访问getObservable()。在绑定中,这看起来很难看,但有时您只是无法访问父对象所附加的对象。

是否有一种与 ES5 兼容的方法来创建和访问 sub-observables?

4

1 回答 1

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));
于 2014-03-03T00:42:40.543 回答