Pracuję z knockoutjs i próbuję wstawić instancję ViewModel z danych JSON. Według dokumentacji knockoutjs mogę użyć tego stwierdzenia:Podczas mapowania wartości koMapping.fromJS mają wartość null
ko.mapping.fromJS(data, viewModel);
Oto mój kod:
var pledgeVM=function(){
this.name=ko.observable();
this.Assets=ko.observableArray([]);
this.StartEdit=function(assetModel){
};
};
pledge = {"name":"Moses","Assets":[{"CityId":13,"commetns":null},{"CityId":14,"commetns":null}]};
var pledgeVMinstance=new pledgeVM();
ko.mapping.fromJS(pledge,pledgeVMinstance);
dla niektórych danych powodu nie zaludnionych (pledgeVMinstance.name() jest nieokreślone) chyba zmienię oświadczenie do:
ko.mapping.fromJS(pledge,{},pledgeVMinstance);
może ktoś może mi wyjaśnić dlaczego rzeczy się dzieje w ten sposób.
Dzięki
To tylko częściowo prawda. Jeśli wywołasz z dwoma argumentami: 'ko.mapping.fromJS (data, mappedObject)' gdzie drugi argument jest "mappedObject", który jest już utworzony przez wtyczkę mapowania (więc ma zdefiniowaną właściwość '__ko_mapping__') będzie traktował drugi argument jako viewModel, a nie jako opcje. Zobacz: https://github.com/SteveSanderson/knockout.mapping/blob/master/knockout.mapping.js#L96. Tak jest w dokumentacji, że działa przykład aktualizacji 'ko.mapping.fromJS (data, viewModel);'. – nemesv
Nie wiedziałem tego. Dzięki. –
Tak więc w dokumentacji, kiedy używasz 2 prametrów - druga to opcje? dlaczego jest to "ko.mapping.fromJS (data, viewModel);" drugi to viewModel? – happyZZR1400