2015-09-19 75 views
1

我有一個可排序的夾具列表,它使用foreach綁定從observableArray填充。陣列中每個燈具的參數之一是position用jQuery更新綁定排序?

該位置反映了夾具的排序順序。默認情況下,當使用foreach插入夾具時,位置編號的順序是正確的,但是當您通過拖動項目排序列表時,位置編號爲使用jQuery更新:

$("#picks").sortable({ 
    revert: true, 
    placeholder: "placeholder", 
    containment: 'parent', 
    axis: "y", 
    handle: '.dragHandle', 
    update: function() { 
     for (var i = 1; i <= $('#picks li').length; i++) { 
      $('#picks li:nth-child('+i+')').find('span.num').text(i); 
     } 
    } 
}); 

所以,位置編號做改變,但由於數無需引用觀察到的更新,可觀察本身不會被更新。我的問題是,如何使用與jQuery排序相關的更新函數更新observable。

我不想讓數字成爲輸入,所以使用帶有值綁定的輸入不是一個選項!

Demo Fiddle

+0

嘗試在更新方法中手動通知所有fixtures observable數組的訂閱者,如下所示:「fixtures.valueHasMutated()」 – dreamweiver

+0

jQuery函數在我的viewModel之外,所以我不能引用'fixtures'。我應該移動viewModel中的jQuery函數來嘗試嗎? –

+0

我嘗試了這個路線,但它沒有達到預期的效果:http://jsfiddle.net/tsnolan23/rswq1kjt/17/ –

回答

0

你需要一個binding handler for your sortable。如果您在綁定處理程序之外混淆DOM,則會出現類似這樣的問題。作者甚至在github頁面的底部提供了一些演示小提琴的鏈接。