如何在使用knockout时处理viewmodel中的方法命名冲突

时间:2013-07-05 15:07:49

标签: knockout.js

全新淘汰赛,并想知道是否有人可以为我回答问题。

是否有办法处理视图模型,其属性在绑定到页面上的元素时命名相同。 e.g

<input data-bind="value: prop1" />

function vm1(){
  this.prop1 = something
}

function vm2(){
  this.prop1 = something
}

ko.applybindings(new vm1());
ko.applybindings(new vm2());

我在一个文本框上测试了这个场景,基本上最后一个绑定获胜了。怎么能处理这个场景。

2 个答案:

答案 0 :(得分:1)

有两种方法可以解决这个问题。

  • 指定绑定的目标,如下所示:ko.applyBindings(new vm1(), document.getElementById("vm1"));
  • 创建一个“主”视图模型,其中包含您的vm1vm2模型以及specify the binding context

答案 1 :(得分:1)

在那里你绑定到页面,所以最后一个获胜,但你可以通过将元素作为第二个参数传递来绑定页面的元素或部分。

<div id="one">
  <input data-bind="value: prop1" />
</div> 

<div id="two">
  <input data-bind="value: prop1" />
</div>

function vm1(){
  this.prop1 = something
}

function vm2(){
  this.prop1 = something
}

ko.applybindings(new vm1(), document.getElementById("one"));
ko.applybindings(new vm2(), document.getElementById("two"));