2012-11-29 74 views
0

我想要挖掘映射插件與Ryan Niemeyer的可排序插件工作,並沒有成功。在我的例子中,如果您嘗試將一個項目排入列表中間,那麼它總是將其放在最下面。排序到列表頂部工作,但如果您嘗試將項目排序到除頂部以外的任何地方,它將自動進入列表底部。Knockout與映射和可分類插件

例子: http://jsfiddle.net/thebassix/cKX53/1/

這裏是我的html:

<div id="results"> 
      <h3>Tasks</h3> 
      <ul data-bind="sortable: series"> 
       <li data-bind="text: Name"></li> 
      </ul> 
     </div>​ 
+0

對不起我錯誤的jsfiddle我剛剛更新了鏈接。 –

+0

我真的不知道爲什麼它這樣做。我唯一的猜測是,出於某種原因,它將刪除該項目,然後將新項目推到陣列上,只要將它放在中間,但這沒有意義,因爲它沒有在前面執行......在Ryan中例如,他有一個自定義綁定sortableList,它將項目拼接回正確的位置。我不明白爲什麼會這樣,但也許出於某種原因,這種事情對於它的工作是必要的。 – jonhopkins

回答

1

問題看起來是有關映射插件將你的_destroy屬性變爲可觀察到的。 Knockout核心中的功能以及處理_destroy的可排序插件中的功能都預計它是一個普通屬性。

映射插件確實有一個copy選項,您可以使用該選項來簡單地複製屬性而不是創建可觀察對象。然而,這似乎只對頂級性能的工作,所以如果你是在一個數組直接傳遞,那麼你可能需要設置你的映射選項,如:

var mappingOptions = { 
    create: function(options) { 
     return ko.mapping.fromJS(options.data, { copy: '_destroy' }); 
    }    
}; 

樣品:http://jsfiddle.net/rniemeyer/9UGKQ/

+0

感謝您的解釋和解決方案。 –