2012-06-06 14 views
16

Knockout.js kullanarak REST-Service için bir istemci oluşturmak istiyorum. Farklı URL'ler aracılığıyla erişmek istediğim çok sayıda Repositorys var - bu yüzden Revealing-Prototype-Pattern kullanarak bu çözümü buldum. Benim Sorunum: ItemsProperty ürününü, hizmetimden aldığım "verilerim" ile nasıl eşleyeceğimi bulamıyorum.Knockout.js bir JSON'u gözlemlenebilir diziye eşleme

var Repository = function (url) { 
    this.Url = url; 
    this.Items = ko.observableArray([]); 
    this.PendingItems = ko.observableArray([]); 
}; 

Repository.prototype = function() { 
    var 
     getAllItems = function() { 
      var self = this; 
      $.getJSON(self.Url, function (data) { 
      // data=[{"Id":1,"Name":"Thomas","LastName":"Deutsch"},{"Id":2,"Name":"Julia","LastName":"Baumeistör"}] 
       ko.mapping.fromJS(data, self.Items); 
      }); 
     }, 
    ... 


// i call it like this: 
customerRepository = new Repository('http://localhost:9200/Customer'); 
customerRepository.getAllItems(); 

Sorunun bu olduğunu düşünüyorum: ko.mapping.fromJS (veri, self.Items); ancak bunu yapmanın doğru yolunu bulamıyorum.
Soru: Neyi yanlış yapıyorum? Ben bir örnek bulduk - ve ben de aynı şeyi yapıyorum düşünüyorum:

cevap

28

BenJS'nin iki argüman versiyonunun sadece önceden eşlenmiş olan nesneler için kullanıldığını, yani örtülü bir boş eşleme seçenekleri nesnesine sahip olduklarına inanıyorum. Eşlemeniz ilk kez çalıştırıldığı için, bu boş seçenek nesnesini sağlaması gerekir. Bu yardımcı olur

ko.mapping.fromJS(data, {}, self.Items); 

http://jsfiddle.net/madcapnmckay/j7Qxh/1/

Umut.

+1

Herkesin başvurusu için, bu örnekteki orta boş nesne değişmezi, eşleme seçenekleri nesnesi için boş bir yer tutucudur. – pimbrouwers

İlgili konular