2013-05-24 1 views
1

JS 객체가 아닌 다음 JS Bin 코드로 이동 된 UI 요소를 가져올 수 있습니다. 이동이 이루어진 후 jquery 정렬 후 기본 객체 가져 오기

http://jsbin.com/edopuh/14/edit

ko.bindingHandlers.Sortable = { 
    init: function (element, valueAccessor, allBindingsAccessor) { 
     var options = ko.utils.unwrapObservable(valueAccessor() || {}); 
     $(element).sortable({ 
     items: 'li:not(".notsortable")', 
     update: function(event, ui){ 
      alert("you just moved " + $(ui.item[0]).text()); 
     } 
     }); 
    } 
}; 

는 어떻게 사람 개체와 새로운 위치의 목록을 얻을 수 있나요?

+0

당신은 새로 이동 항목의 위치를 ​​얻으려면 :

나는 상황에 콘서트에서 두 가지를 사용하는 방법을 보여주기 위해 여기 예를 업데이트했습니다? – PSL

+0

* 정확히 * 누락되어 액세스 권한을 얻으려고합니까? 이동 된 요소의 바인딩? – GotDibbs

+0

유사한 기능을 보려면 다음을 확인하십시오. https://github.com/rniemeyer/knockout-sortable –

답변

1

의견에서 언급했듯이 각 Person의 위치는 이동 된 후에 정렬 가능하게 저장하려고합니다. 이렇게하려면 이동중인 DOM 요소에 첨부 된 모델에 액세스해야합니다. 녹아웃은 ko.dataFor([elem])이라는 요소와 연관된 View Model에 액세스하기위한 유틸리티 기능을 제공합니다.

이동 된 요소의 색인을 얻으려면 이동 된 항목에 대해 jQuery의 .index() 함수를 호출하기 만하면됩니다. http://jsbin.com/edopuh/27/edit

ko.bindingHandlers.Sortable = { 
    init: function (element, valueAccessor, allBindingsAccessor) { 
     var options = ko.utils.unwrapObservable(valueAccessor() || {}); 
     $(element).sortable({ 
     items: 'li:not(".notsortable")', 
     update: function(event, ui){ 
      var $item = $(ui.item[0]), 
       person = ko.dataFor(ui.item[0]); 

      alert("you just moved " + $item.text()); 

      person.position = $item.index(); 
     } 
     }); 
    } 
};