2014-02-24 54 views
0

我有一個可排序列表的列表,我正在拖動一些項目到這些列表中。knockoutjs可排序綁定 - 如何獲得targetparentnode?

我需要知道列表的id我保存項目,所以我可以創建一個鏈接記錄並將其保存在服務器端。

每個可排序列表的DOM元素名稱都等於該列表的ID。

令人敬畏的knockoutjs可排序綁定具有arg.sourceParentNode但不是arg.targetParentNode。我如何獲得targetParentNode?

謝謝!

我正在構建一個屏幕來將事物連接在一起,基本上只是創建數據庫表之間的關係並將記錄插入到多對多表中。我希望它只是簡單的簡單我在這裏想...

我不能是唯一一個誰會發現它是有用的知道哪個DOM元素對應於哪個observableArray,所以我希望我失蹤這裏有一些簡單的東西,有人對此有一個簡單的解我總是覺得奇怪,淘汰賽沒有DomElementForObservable功能,但在過去,我總是能夠解決這個問題,而不需要它。在這種情況下,我很難過。有任何想法嗎?

獲取可觀察元素的DOM元素的通用方法非常棒。

回答

1

一個不錯的選擇是嘗試將此功能放入視圖模型中,而不是依賴於DOM元素。例如,您可以將id附加到observableArray而不是DOM元素。像:

this.myItems = ko.observableArray(); 
this.myItems.id = "myId"; 

然後,你可以看看arg.targetParent.id

或者,您可以在您的視圖模型像訂閱:

this.myItems.subscribe(function(newValue) { 
    this.createLink("myItems", newValue); //or whatever you need to do in your code 
}, this); 

beforeMoveafterMove處理程序傳遞eventui對象作爲第二個和第三個參數,所以你可以檢查他們尋父的元素。

Knockout沒有從observable獲取DOM元素的通用方法,因爲observable可能會綁定到許多元素。希望這給你一些想法,但。

+0

這是一個很好的解決方案,謝謝! – pilavdzice

+0

我仍然認爲如果淘汰賽的觀察對象有一組指向他們綁定的DOM元素的指針,它會很方便。循環遍歷所有數組,並附加訂閱或將事物注入可觀察對象是一種創造性的解決方法,但事實證明,僅僅執行一些操作就像獲取目標ID一樣簡單。你的例子很簡單,但在現實世界中,這樣做的代碼更復雜一點,因爲我使用模板來循環這些嵌套數組我沒有簡單的方法在每個項目上運行該代碼,現在我需要在每個項目上執行它初始化和刷新。 – pilavdzice