2014-08-29 25 views
5

Nakavt eşlemede 'oluştur' seçeneği kullanıldığında diziyi gözlemlenebilir bir dizi yapardık. Ancak gözlemlenebilir dizideki her nesnenin özelliklerini gözlemlenebilir kılıyoruz?Knockout gözlemlenebilir bir dizide nesne özellikleri nasıl gözlemlenebilir?

Bu örnekte, nakavt dokümantasyonundan, çocuk dizisi gözlemlenebilir bir dizi haline getirilmiştir, ancak her bir nesnenin içindeki kimlik, isim gibi tüm öğelerin gözlenebilir olmasını sağlamak istiyorum. Bunu nasıl başarabiliriz. Her yeni oluşturulmuş nesneye create bloğuna bir ko.observable koyun? documentation başına

var data = { 
    name: 'Graham', 
    children: [ 
     { id : 1, name : 'Lisa' } 
    ] 
}; 

// Your custom data model 
var myChildModel = function (data) { 
    this.id = data.id; 
    this.name = data.name; 
}; 

var mapping = { 
    'children': { 
     create: function(options) { 
      return new myChildModel(options.data); 
     } 
    } 
}; 

var viewModel = ko.mapping.fromJS(data, mapping); 

cevap

1

: Bir nesnenin tüm özellikleri gözlemlenebilir dönüştürülür

  • . Bu Elbette

    devletler “yaratmak” geri arama oluşturmak içeride sen ko.mapping.fromJS eğer başka bir çağrı yapabilir kullanarak özelleştirme nesne yapımı konusunda Böylece aşağı bölümünde

arzuluyorsun.

var myChildModel = function(data) { 
    ko.mapping.fromJS(data, {}, this); 

    this.nameLength = ko.computed(function() { 
    return this.name().length; 
    }, this); 
} 

Doğal olarak, bu tüm özelliklerini dönüştürmek olacaktır: şöyle sağlanan

örnektir. Daha ayrıntılı yapılandırma, özel gereksinimleri ele almak için bu eşleme çağrısına özel olarak uygulanabilir.

1

hızlı cevap

var myChildModel = function (data) { 
    this.id = ko.observable(data.id); 
    this.name = ko.observable(data.name); 
; 

gözlemlenebilir nesnenin özelliklerini yapmaktır It Ayrıca muhtemelen en kolay yolu, diğerleri

0

olmasına rağmen Basitçe:

var viewModel = ko.mapping.fromJS(data); 

Her şeyi yapar, özellikleri ve dizileri gözlemlenebilir hale getirin. Bu yöntemin ikinci parametresi sadece özelleştirme amacıyla yapılır. İhtiyacınız yoksa kullanmak zorunda değilsiniz!

İlgili konular