2013-08-27 47 views
1

我真的剛剛開始淘汰賽,迄今爲止它非常令人印象深刻。有了這個,我也遇到了一個問題。淘汰賽如何更改綁定到元素的模型

我試圖拿走綁定對象的列表,當點擊時,我希望它將模型綁定到另一個視圖進行進一步編輯,沒有問題。我碰到的問題是,我收到一個錯誤,說我的不能綁定多次到相同的元素。我已閱讀ko.cleanNode([domElement])可用於規避它,但這實際上是內部使用。我已經做了一些搜索,人們提到你應該使用with,但我認爲這不適用於我想要做的事情。

有沒有辦法應用綁定,但只是更新底層模型上下文?

Simplified jsfiddle示例。我的js代碼從119開始,高於ko映射插件。

回答

2

首先,使用外部資源將外部資源添加到您的小提琴中,而不是將它們粘貼到您的小提琴中。

其次,在你的問題上,最簡單的方法是在視圖模型中使用SelectedItem屬性,並將子視圖綁定到它。事情是這樣的:

var MyViewModel = function() { 
    var self = this; 
    self.MyItems = ko.observableArray(); 
    self.SelectedItem = ko.observable(); 
} 

var MyChildViewModel = function() { 
    var self = this; 
    self.SomeProperty = ko.observable(); 
} 

現在填充MyItemsMyChildViewModel實例,並設置SelectedItem你想有你的孩子,並綁定子視圖SelectedItem取其項MyItems

<div id="theChildView" data-bind="with: SelectedItem"> 
    <span data-bind="text: SomeProperty"></span> 
</div> 
+0

未能進行找到KO映射插件的CDN,這就是爲什麼它在小提琴中。 – Justin

+0

@Justin:爲什麼不使用https://raw.github.com/SteveSanderson/knockout.mapping/master/build/output/knockout.mapping-latest.js –

+0

嘗試過,但jsFiddle不喜歡它。 jsFiddle甚至提到,像這樣從github添加外部資源可能會導致意想不到的效果。 – Justin