2013-08-13 4 views
2

Ryan Niemeyer의 드래그 앤 드롭 플러그인 (http://www.knockmeout.net/2012/02/revisiting-dragging-dropping-and.html)을 사용하여 프로젝트를 변환하려고합니다.이벤트 이동 후 KO_Sortable 사용

내가이 항목이 화면에 새 위치로 드래그 한 경우 표시하는 더러운 플래그입니다 구현하기 위해 노력하고있어 나는 내가 aftermove 이벤트가있는 IsDirty 사용 속성

var AccountViewModel = function(data) { 
     this.$type = 'AccountViewModel'; 
     this.IsDirty = new ko.observable(false); 
     ko.mapping.fromJS(data, mapping, this); 

     this.add = function(item) { 
      this.Accounts.push(item); 
     }; 
    }; 

를 사용하여이를 구현 IsDirty 속성을 true로 설정해야하지만 어떤 이유로 인해 데이터 바인딩이 가져 오기 전에 개체를 두 번 이동해야합니다.

ko.bindingHandlers.sortable.afterMove = function(args) { 
     args.item.IsDirty = true; 
    }; 

<div class="accounts" data-bind="sortable: { data: Accounts }"> 
      <div class="row" data-bind="css: { dirty: IsDirty, newItem: IsNewAccount }"> 
       <div class="actions item"></div> 
       <div class="accountItem item" data-bind="text: IsDirty"></div> 
       <div class="accountItem item" data-bind="text: AccountName"></div> 
       <div class="accountItem item" data-bind="text: IACode"></div> 
       <div class="accountItem item" data-bind="dateFormat: OpenDate"></div> 
       <div class="accountItem numberItem item" data-bind="text: T12Revenue"></div> 
       <div class="accountItem numberItem item" data-bind="text: AUA"></div> 
       <div class="accountItem item"></div> 
       <div class="actions item"><img id="delete" src="~/Images/delete.png"/></div> 
      </div> 
     </div> 

강제로 새로 고침해야합니까? 어떤 도움이라도 대단히 감사하겠습니다 !!

+0

가 수행

ko.bindingHandlers.sortable.afterMove = function(args) { args.item.IsDirty(true); }; 

데모 당신이 관찰의 값을 설정하지 args.item.IsDirty (true)를 통해? –

답변

2

IsDirty 속성은 this.IsDirty = new ko.observable(false);으로 정의되므로 녹아웃 관측 가능합니다.

Observables은 함수이고, 당신이 당신이 설정하고 싶은 인수로 값을 호출하여 그 값을 설정해야합니다 JSFiddle