2014-08-29 11 views
5

Gdy opcja "utwórz" jest używana w mapowaniu z nokautem, uczyniłaby tablicę tablicą obserwowalną. Ale jak możemy uczynić właściwości każdego obiektu w tablicy obserwowalnej możliwym do zaobserwowania?Jak uzyskać właściwości obiektu w tablicy obserwowalnej nokautu?

W tym przykładzie z dokumentacji nokautu tablica podrzędna jest tablicą obserwowalną, ale chcę, aby wszystkie elementy, takie jak id, nazwa w literaturze każdego obiektu były również obserwowalne. Jak to osiągniemy. Po prostu umieść ko.observable na każdym nowym obiekcie w bloku tworzenia?

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); 

Odpowiedz

1

za tym documentation:

  • Wszystkie właściwości obiektu, są przekształcane w zauważalny.

Zatem w punkcie dotyczącym budowy obiektu Dostosowywanie używając „stworzyć” stwierdza

Oczywiście, wewnątrz tworzyć zwrotnego można zrobić innego połączenia do ko.mapping.fromJS jeżeli chciałbyś.

Przykład warunkiem jest następujący:

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

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

Oczywiście, byłoby przekształcić wszystkie właściwości. Bardziej szczegółową konfigurację można następnie zastosować specjalnie do tego połączenia mapowania w celu obsługi wymagań niestandardowych.

1

Szybka odpowiedź jest dokonanie właściwości obiektu obserwowalne

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

To też chyba najprostszy sposób, chociaż istnieją inne

0

prostu:

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

Czyni wszystko, sprawiają, że zarówno właściwości, jak i tablice są widoczne. Drugi parametr tej metody służy wyłącznie dostosowaniu. Nie musisz go używać, jeśli nie potrzebujesz!

Powiązane problemy