2012-07-28 4 views
2

매핑 플러그인을 사용하여 observableArray의 일부로 항목을 업데이트하는 중에 문제가 있습니다.매핑 플러그인을 녹아웃합니다 배열의 단일 항목 업데이트

나는 다음과 같은 코드를 가지고

accounts.list = ko.mapping.fromJS(@(Html.Raw(Model.AccountsJSON))); 

나는 테이블이 바운드 모두가 제대로 작동이, 나는 다음 기능

$('#datatable').delegate(".cancelLock", "click", function() { 
     var item = ko.contextFor(this).$data; 
     var param = {AccountNumber : item.AccountNumber()} 
     $.post('@Url.Action("cancellock","accounts")',param,function(result){ 
      ko.mapping.fromJSON(result,item); 
      if(accounts.lockeditem() == item){ 
       accounts.lockeditem(0); 
      } 
     }); 
    }); 

<tbody data-bind="foreach: list"> ... </tbody> 

를 사용하여이 줄 ko.mapping.fromJSON(result,item);은 아무런 오류도 발생시키지 않으며 기능은 계속되지만 원인은 관찰 할 수있는.

코드를 ko.mapping.fromJSON(result,accounts.list); (그리고 전체 목록을 반환하도록 컨트롤러를 업데이트)로 변경하려고 시도했지만 올바르게 작동합니다. 전체 테이블을 업데이트하고 싶지는 않지만 "간단하게"하려고합니다. '항목'을 원래 상태로 되 돌리십시오.

나는 또한 item.Updated(result.Updated); (업데이트 된 것은 개체의 속성 중 하나임)을 사용해 보았습니다. 예상 한대로 작동하지만 수동으로 호출하지 않으면 수동으로이 속성을 호출하지 않아도됩니다.

ko.mapping.fromJSON(result,item); (또는 일부 유사 콘텐츠)을 사용할 수 있습니까? 내가 바보 같은 짓을하고 있니? 사전에

감사합니다.

답변

4

의도가 잘못 이해 된 경우가 아니라면 mapping docs에서 "업데이트 대상 지정"에 나와있는 ko.mapping.fromJS (또는 fromSSON)의 변형을 사용하면됩니다. 여기

ko.mapping.fromJSON(result, {}, item); 

는 바이올린의 : 그래서 난 당신이 원하는 생각 ... http://jsfiddle.net/kR4jc/

+1

감사합니다. 이전에 실제로 시도했거나 실제로 시도하지 않았다고 생각합니다. 영향을 미치는 문제가있는 것 같습니다. –