2017-03-07 7 views
1

DevExtreme과 녹아웃을 사용하고 있습니다. JSON-Data를 서버에서 가져 와서 관찰 가능 객체에 저장하려고합니다.비동기 함수에서 observable 값을 설정하십시오.

현재 접근 방식 :

var dataArray = ko.observableArray(); 
var dataId = ko.observable(""); 

MyApp.overview = function (params) { 
    "use strict"; 

    var viewModel = { 
     [...] 
    } 

    return viewModel; 
}; 

function getDataFromJson() { 
    $.ajax({ 
     url: 'http://localhost:56253/test/3?format=json', 
     dataType: 'json', 
     success: function (data) { 
      var entries = $.map(data, function (item) { return new entry(item) }); 
      // first entry is ID 
      for (var i = 1; i < entries.length; i++) { 
       dataArray.push(entries[i]); 
      } 
     } 
    }); 
} 

function getIDFromJson() { 
    $.ajax({ 
     url: 'http://localhost:56253/test/3?format=json', 
     dataType: 'json', 
     success: function (data) { 
      dataId(data.ID); 
     } 
    }); 
} 

function entry(data) { 
    this.A = data.A, 
    this.B = data.B, 
    this.C = data.C 
} 

나는 이러한 시나리오에 새로 온 사람, 그래서 난 내 apporach 경우 확실하지 않다. 테스트를 위해, 나는 버튼을 통해 수동으로 JSON-데이터를 얻을 수있는 함수를 호출하고있어, 나는 필요한 데이터를 얻을 수 있지만, 관찰 가능한 양이 포함되어 : 나는 무엇을 놓치고

function c(){if(0<arguments.length)return c.tb(c[E],arguments[0])&&(c.ga(),c[E]=arguments[0],c.fa()),this;a.l.oc(c);return c[E]} 

? 아니면 일반적으로이 방법이 나쁜 관행입니까?

+0

서버 측 기술이란 무엇입니까? –

+0

@JasonSpake 나는 서비스 공격을 사용하고 있습니다. – Marcel

답변

1

Knockout Mapping PluginfromJSON 명령 (데이터 형식에 따라 fromJS을 사용해야 할 수도 있음)을 사용하면 소스에서 가져온 데이터가 매핑됩니다.

function getDataFromJson() { 
    $.ajax({ 
     url: 'http://localhost:56253/test/3?format=json', 
     dataType: 'json', 
     success: function (data) { 
      ko.mapping.fromJSON(data, {}, self.dataArray); 
     } 
    }); 
}