2013-09-25 2 views
0

나는 녹아웃에 익숙하지 만 Google과 스택 오버플로 덕분에 필요한 조각을 찾을 수있었습니다. 나는 그저 함께 일하도록하는 것 같다.녹아웃은 더티 플래그로 정렬 할 수 있습니다. 더러운 항목을 되돌릴 때 정렬 가능한 순서를 되돌리기

그래서 RP Niemeyer 코드를 여기 또는 사이트에서 답변으로 게시했습니다. 나는 sortable, dirty 플래그와 sortable 항목의 인덱스를 관찰하는 knockout을 사용하고있다.

내가 찾고있는 것은 내가 더티 항목을 되 돌리는 경우 정렬 식 업데이트 순서를 만드는 방법입니다. 내 개체의 인덱싱 된 속성은 되돌릴 수 있지만 정렬 가능한 영역의 항목 순서는 되돌릴 값을 기준으로 업데이트되지 않습니다.

여기에 a fiddle의 문제가 있습니다.

"항목 1"을 "항목 2"다음으로 이동하면 두 항목이 더러운 것처럼 보입니다. 그런 다음 '되돌리기'버튼을 클릭하십시오. "주문"항목이 어떻게 업데이트되는지는 알지만 정렬 가능한 순서는 업데이트되지 않습니다.

"문제 3의 부작용"이라면 "항목 4"다음으로 "항목 3"을 이동하면 항목 1-4가 더티로 표시됨을 알 수 있습니다.

이것은 더티 항목을 되돌릴 때 정렬 할 수없는 항목의 순서가 재설정되지 않기 때문입니다. "항목 1"은 해당 주문에 대한 값이 0이지만, 정렬 가능한 색인 1에 있습니다. 따라서 코드는 그것을 더러운 것으로 다시 표시합니다.

누군가 내가 원하는대로 작동하도록 변경해야 할 부분을 지적 할 수 있으면 감사히 생각합니다. 사전에

The code is quite lengthy and I wouldn't know which part to post here, but apparently I need a code block to be allowed to post my fiddle link. :(

덕분에, 현재의 구조 루드

답변

0

, 난 당신이 다시 "올바른"순서로 항목을 넣어보기 모델 수준으로 revertItem 기능을 몇 줄을 추가 할 수 있다고 생각합니다. 같은 뭔가 :

self.revertItem = function (preset) { 
     $.each(preset.dirtyItems(), function (index, item) { 
      item.revert(); 
     }); 

     //new code added to sort based on order 
     self.items.sort(function(a, b) { 
      return a.order() > b.order() ? 1 : -1; 
     }); 
    };  

업데이트 바이올린 : http://jsfiddle.net/rniemeyer/d2e5c/

+0

이 참으로 일했다. 다른 질문에서 찾은 것과 같은 정렬 기능을 시도했지만 전체 revertItem 기능을 사용하면 아무 것도하지 않습니다. 이 하나는 일했다. 무리 감사. –