2013-08-27 126 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