2013-03-23 1 views
1

데이터에 WebAPI를 사용하고 프런트 엔드에 KnockOutJS를 사용하는 ASP.NET MVC 응용 프로그램이 있습니다. 대부분 부분적으로는 잘 작동하지만, 값을 업데이트 할 때 바인딩 된 요소에 값이 반영되지 않는다는 사실을 깨닫기 시작했습니다.ko.mapping.fromJSON의 이해

이유는 데이터가 서버에서 JSON으로 전달되고 일반 JSON 객체로 변환되기 때문입니다. 즉, 속성이 "관찰 가능"으로 매핑되지 않으므로 개체의 값을 변경하면 아무 것도 업데이트되지 않습니다.

내가 추가 한 "매핑"이라는 KnockOutJS 용 플러그인에 대해 읽었지 만 올바르게 작동하도록 올바른 구문을 파악할 수는 없습니다. 다른 사람이이 문제를 해결하고 몇 가지 제안을하기를 바랍니다. 거기에 무엇을 사용했는지, 그리고 점점 데이터를 표시하는 점에서 "작품";

<script type="text/javascript"> 
    function BlogViewModel() { 
     var self = this; 
     self.blogs = ko.observableArray(); 
     var baseUri = '@ViewBag.ApiUrl'; 

     //$.getJSON(baseUri, self.blogs); 
     $.getJSON(baseUri, {}, 
       function (data) { 
        ko.mapping.fromJSON(data, self.blogs); 
       }); 
    } 

    $(document).ready(function() { 
     ko.applyBindings(new BlogViewModel()); 
    }); 

    }); 
</script> 

주석 처리 부분 ($ .getJSON (기저 URI, self.blogs가)) : 여기에 내 현재 코드입니다.

아래 코드는 데이터를 읽고 맵핑을 적용하려는 제 시도입니다. 그것은 전혀 작동하지 않습니다. 즉, 페이지의 데이터가 보이지 않습니다.

나는 분명히 분명한 뭔가를 놓치고 있습니까?

+1

은 시간을 거슬러 보면 당신의 질문을보고 당신은 당신이 찾고 있던 무엇을 발견 했는가? 그렇다면 답을 게시하십시오! – beauXjames

+0

동일한 문제가 있습니다. 때로는 객체가 서버 측에서 업데이트되는 경우가 발생합니다. 볼 수있는 결과를받은 후 DOM 업데이트를 실행해야합니다. 어떤 해결책을 찾았습니까? –

답변

2

이 같은 코 뷰 모델로 JSON 데이터를지도 : ...

ko.mapping.fromJSON(data, {}, self.blogs);