我試圖用knockout-sortable與映射插件將產品列表拖到另一個列表中。淘汰賽可拖曳排序映射克隆變更
這是一個非常stripped-back fiddle試圖顯示我在得到什麼。
我想要的是'購物車'中的產品參考而不是克隆'貨架'上的產品。
我已經設法通過參考貨架上的物品來計算物品的名稱,但我無法讓購物車中的產品只有他們需要的數據以供參考,沒有全部另一方面。
環顧四周,我發現這個非常誘人的解決方案由Ryan Niemeyer在similar problem幾年前,但小提琴扔出404錯誤!
我創建了一個「克隆」功能,而是因爲我的所有數據被映射它不使用一個構造函數,例如:
var product = function(ID, name, other){
this.productID = ko.observable(ID);
//etc.
};
這意味着我不能做我想做的事,這是:
product.prototype.clone = function(){
var x = ko.mapping.toJS(this);
delete x.productName;
delete x.someOtherData;
ko.mapping.fromJS(x);
};
哪我希望將下降一個新的對象到購物車只有原來的productID
關鍵的參考。我在小提琴中註釋了這個代碼。拖動後console.log
不會被調用,所以函數甚至沒有被調用。
我也看過谷歌論壇的淘汰賽,發現this thread,這是我得到克隆位 - 但我不能讓它適合我的用例!
對於這個問題的成功答案的結果是,當購物車中只有一輛自行車時,將productArray
保持原樣並將listArray
設置爲[{'productID':1}]
。
這是我第一次發表一個關於SO的問題,所以如果我沒有讓自己清楚,請對我輕鬆點!我已經感謝社會,因爲它在解決自己的問題好多年沒有這麼有用的:)
那個不可觀察的克隆已經成功了!在我的應用程序中,我需要有多個列表,並且您的解決方案也可以很好地應對:http://jsfiddle.net/cheersphilip/hLqctg4L/2/ – cheersphilip 2015-01-15 17:34:04