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兼容方法?
答案 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));