在 knockout.js 组件模板中访问 $root 绑定上下文

Accessing the $root binding context within a knockout.js component template

访问 KO 组件模板中的 $root 绑定上下文 returns 页面的视图模型而不是组件的视图模型。为什么会这样以及如何在不使用 $parent 的情况下从嵌套绑定上下文中访问组件的视图模型?

以下示例片段输出 "test2"。

HTML:

<my-component></my-component>

JS:

ko.components.register("my-component", {
    template: "<div data-bind='text: $root.test'></div>",
    viewModel: function(params) { this.test = "test1" }
});

ko.applyBindings({ test: "test2" });

目前您不能将 $root 绑定上下文用作组件上下文,但 $parent 和 $parents[] 正在按预期工作,请参阅 documentation. There will be $component binding context same as $root for page in version 3.3 and it is allready done github