Knockout不使用提供的视图模型实例

时间:2017-03-29 21:21:26

标签: javascript typescript knockout.js

我有一个我添加到页面的淘汰组件。我试图用我创建的视图模型的实例调用ko.applyBindings。但淘汰似乎忽略了它并创建了自己的实例。

代码:

ko.components.register("my-component", {viewModel: MyViewModel, template: "....."});
ko.applyBindings(new MyViewModel(this.config), document.getElementsByTagName("my-component")[0]);

我在console.log的构造函数中有一个MyViewModel,我看到创建了两个实例:一个带有我传递的参数,一个没有。淘汰赛似乎正在使用没有的那个。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

组件实际上有自己的视图模型。但是,您可以向它们传递您之前创建的视图模型的实例:

var myViewModel = new MyViewModel(this.config);
ko.components.register("my-component", { viewModel: { instance: myViewModel }});
ko.applyBindings(myViewModel);