2013-03-07 54 views
1

我有一个foreach(超过FOOS)表,其中一个用户点击一个项目,这种方法被称为:复制可观察绑定到一个对话

AddFoo = function (addingItem) { 
     var addingItem = jQuery.extend(true, {}, existingObservableBoundToJqueryDialogue); 
     this.Foos.push(addingItem); //EditingItem is bound to the add dialogue, and I want a new observable with the same properties not bound to the dialogue 

    }; 

我有麻烦的是,如果我去和编辑这个可观察的(新的addItem)在表中,它改变了所有这些添加的项目(每个addingItem)

回答

1

非常快速的解决方案是使用knockout mapping插件来创建普通的vanilla json对象,然后从中创建新的淘汰模型:

var addingItem = ko.mapping.fromJS(ko.mapping.toJS(existingObservableBoundToJqueryDialogue)); 

所以保持观察的类型,很聪明这将拆开包装观察到的,然后从价值创造另一个:)

Working sample on jsfiddle

+0

啊! – FutuToad 2013-03-07 15:43:42

+1

是的,如果它是不可观察的,那么就没有双向绑定。顺便说一句,如果你有一个未编辑的模型(不绑定到输入字段),那么可以有非可观察的字段(它甚至可能快几毫秒;)) – 2013-03-07 15:44:18

+0

再次感谢!在ASP.NET MVC btw脚本资源本地化的酷帖子! – FutuToad 2013-03-07 15:47:45