1

'foreach 바인딩을 사용하여 배열을 가져올 때 왜 내 ko.mapping이 제대로 작동하는지 알 수 없지만 하나의 객체 일 때 ('with'바인딩 사용) 전혀 작동하지 않습니다. 나는 오류를 얻을하지 않습니다,하지만 나는 또한 어떤 결과를 얻을하지 않습니다 : 내가 배열로 getSingleEvent()의 결과를 밀어와 같이 다시 'foreach는'을 사용할 수 있습니다observable 대 observableArray 대 매핑 Knockout.JS

function EventViewModel() { 
    var self = this; 
    self.events = ko.observableArray([]); 
    self.singleEvent = ko.observable({}); 

    self.getEvents = function() { 
     self.events.removeAll(); 
     $.ajax("/api/Event/", { 
      contentType: "application/json", 
      success: function (allData) { 
       ko.mapping.fromJS(allData, null, self.events); 
      } 
     }); 
    }  
    self.getSingleEvent = function() { 
     self.events.removeAll(); 
     $.ajax("/api/Event/?guid=435a666b-7913-417f-a474-dfb33d74c2ec", { 
      contentType: "application/json", 
      success: function (allData) { 
       ko.mapping.fromJS(allData, null, self.singleEvent); 
      } 
     }); 
    } 

    self.getEvents(); 
    self.getSingleEvent(); 
}; 
window.vm = new EventViewModel(); 
ko.applyBindings(vm); 

:

ko.mapping.fromJS([allData], null, self.singleEvent); 

그리고 singleEvent를 작동시키는 observableArray로 만드십시오. 그러나 그것은 나에게 속임수처럼 보입니다.

[{"EventId":4,"Year":2013,"StartDate":"2013-08-28T00:00:00","EndDate":"2013-09-02T00:00:00","EventGuid":"435a666b-7913-417f-a474-dfb33d74c2ec"},{"EventId":5,"Year":2013,"StartDate":"2013-06-07T00:00:00","EndDate":"2013-06-09T00:00:00","EventGuid":"615014ba-15cd-4371-8d43-04d66eb558a2"}] 

및 getSingleEvent()에서 JSON은 다음과 같습니다 :

getEvents에서 JSON()는 다음과 같습니다

{"EventId":4,"Year":2013,"StartDate":"2013-08-28T00:00:00","EndDate":"2013-09-02T00:00:00","EventGuid":"435a666b-7913-417f-a474-dfb33d74c2ec"} 
+0

JSON 데이터가 API에서 돌아 오는 모습은 무엇입니까? 그러면 결과 자바 스크립트 객체 유형이 결정됩니다. –

+0

그냥 JSON 샘플 –

답변

0

나는 ko.mapping하지 않는 것을 꽤 확신 사물을 관찰 할 수있게 만든다. 대신 객체의 각 속성을 관찰 가능하게 만듭니다. 반면에, 관찰 가능을 설정하기 위해 self.singleEvent(allData)을 수행하는 것에서 막을 수있는 것은 없습니다.

+0

으로 원본 게시물을 편집하면 올바른 경로로 나를 안내합니다. 'selfSingleEvent (ko.mapping.fromJS (allData));'getSingleEvent()의 성공으로 트릭을 만들었습니다! 감사! –