2011-07-05 5 views
7

나는 backbone.js 프로젝트를 진행하고 있는데, 드래그 앤 드롭 행 (backbone.js 모델)과 jQuery UI 업데이트 이벤트 내 모델을 다시 주문하고 모든 것이 잘되도록 만들 수 있습니다. 나는이 일을하는 더 깨끗한 방법이 있다면 누구나 궁금해하고있었습니다. 나는 아래에 몇 가지 코드를 포함시켰다.jQuery UI의 sortable 및 backbone.js

$(".section").sortable({items: 'tr', update: function() 
{ 
    console.log("Event Fire!"); 
    secv.mySort(); 
}}); 

secv는 테이블을 보유하고있는 모델에 대한 내 View입니다. mySort 함수는 요소의 순서를 확인하고 필요한 업데이트를 수행합니다.

+0

이 솔루션에 대해 무엇을 좋아하지 않으십니까? 나는 많은 코드없이 꽤 잘 작동한다고 생각한다. 이것이 바로 지금 백본으로 구현 된 sortables입니다. – c3rin

+0

더 복잡한 또 다른 옵션은 다음과 같습니다. http://stackoverflow.com/questions/10147969/saving-jquery-ui-sortables-order-to-backbone-js-collection – Cymen

답변

1

아마도 초기화 메소드에서보기의 콜렉션 특성을 설정한다고 가정합니다. 같은 메소드에서 뷰 메소드를 콜렉션의 'change'또는 'refresh'이벤트에 바인드해야한다. 이 메서드는 단순히 정렬 된 컬렉션을 다시 그릴 것입니다. 필요한 경우 컬렉션을 정렬하기 전에.

이론적으로 모델이 잠재적으로 새 위치로 업데이트되고 컬렉션에 비교 함수가 있으면 컬렉션이 자동으로 사용됩니다. 이 경우 컬렉션의 '새로 고침'이벤트에 바인딩하면 위에 언급 한 메서드가 트리거되어 뷰의 컬렉션 부분 만 다시 렌더링하면됩니다.

+0

또한 새 비교기를 컬렉션 전에 할당 할 수 있습니다 정렬. 'collection.comparator (function (model) {return model.get ('some_property');}); collection.sort();'컬렉션 콜렉션 뷰에 바인드 할 수있는 콜렉션 _reset_ event를 발생시킵니다. –

+3

이것은 원래의 질문에 어떻게 대답합니까? 문제는 뷰 (DOM)가 모델 컬렉션보다 먼저 정렬된다는 점입니다. – kahoon