使用KnockoutJS,如何指定要绑定的ViewModel?

时间:2012-06-18 12:48:14

标签: javascript knockout.js knockout-2.0

这是一个非常简单的问题,所以我真的希望有一个简单的解决方案。我不想使用任何外部模板库,因为虽然我熟悉EmberJS,但对于我目前正在处理的应用程序来说,Ember会有点过分。

我已经设置了一个快速的JSFiddle:http://jsfiddle.net/zeEFP/3/

2 个答案:

答案 0 :(得分:1)

ko.applyBindings()将viewmodel作为参数。我已经更新了你的小提琴:

http://jsfiddle.net/zeEFP/4/

之前失败是因为你告诉knockout在ViewModel对象的ViewModel属性中寻找属性

答案 1 :(得分:1)

在您最初的小提琴中,您将视图模型应用于整个dom(或更具体地说是window.document.body),因为您没有提供上下文元素。因此,您不需要with绑定(with绑定会创建新的绑定上下文,而您已经处于正确的绑定上下文中)

请参阅:http://jsfiddle.net/zeEFP/10/

如果您希望使用多个视图模型,则可以为applyBindings方法提供上下文:

ko.applyBindings(new FirstViewModel(), document.getElementById("someId));

请在此处查看更新的小提琴:http://jsfiddle.net/zeEFP/8/

如果您不希望有额外的标记作为applyBindings的上下文提供,您可以改为使用覆盖范围的视图模型,然后使用with绑定为部分内容创建新的上下文页面

请参阅:http://jsfiddle.net/zeEFP/11/

希望有助于为您解决问题