讓我們假設我們有一個DOM樹:幾個淘汰賽模型綁定樹
<div id="rootNode">
<span data-bind="..." >
</span>
<div>
<div>
<span data-bind="..."> </span>
</div>
<div id="subNode1" >
<span data-bind="..." > </span>
</div>
</div>
</div>
所以我們可以綁定模式,那棵樹
ko.applyBindings(model, document.getElementById('rootNode'));
但是,如果我們想綁定subNode1到其他模型?如果只是寫
ko.applyBindings(model, document.getElementById('subNode1'));
它不工作我猜是因爲第一次數據綁定重疊第二。
現在我爲什麼要這麼做。我有一個使用Knockout實現的獨立組件的庫。組件是這樣的:
function ComboBox(container)
{
this.name = new ko.observable();
this.someValue1 = new ko.observable();
this.someValue2 = new ko.observable();
ko.applyBindings(this, document.getElementById(container));
}
不幸的是,我不能寫:
SomeBigComponent('rootNode');
ComboBox('subNode');
我怎樣才能解決這個問題?第二個問題是以這種方式組織代碼很好嗎?
上適當/虛擬網絡API方法,但它是非常不舒服,使其中包含不同基於淘汰賽元素庫,是不是? – Neir0
您只需像控制器一樣使用viewModel並添加/刪除您希望Knockout注意的事物。它們可以是自包含的實體,只是在主視圖模型中添加引用,以便它可用於綁定。否則,你必須將每個模型綁定到不同的元素(而不是彼此的後代)。 –