Ich arbeite mit Knockoutjs und ich versuche, ViewModel-Instanz aus JSON-Daten zu füllen. Nach knockoutjs Dokumentation kann ich diese Anweisung verwenden:Beim Mapping ko.mapping.fromJS Werte sind Null
ko.mapping.fromJS(data, viewModel);
Hier mein Code:
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);
aus irgendeinem Grunde Daten nicht aufgefüllt (pledgeVMinstance.name() nicht definiert ist) , es sei denn ich die Aussage ändern zu:
ko.mapping.fromJS(pledge,{},pledgeVMinstance);
jemand kann mir erklären kann, warum Dinge auf diese Weise gehen.
Dank
Dies ist zu verwenden. Wenn Sie mit zwei Argumenten aufrufen: 'ko.mapping.fromJS (data, mappedObject)' wobei das zweite Argument ein "mappedObject" ist, das bereits vom Mapping-Plugin erstellt wurde (also die Eigenschaft '__ko_mapping__' definiert ist), wird es behandelt das zweite Argument als ViewModel und nicht als Optionen. Siehe: https://github.com/SteveSanderson/knockout.mapping/blob/master/knockout.mapping.js#L96. So funktioniert in der Dokumentation das Update-Beispiel 'ko.mapping.fromJS (data, viewModel);'. – nemesv
Wusste das nicht. Vielen Dank. –
Also in der Dokumentation, wenn Sie 2 Parameter verwenden - die zweite Option? also warum es heißt "ko.mapping.fromJS (data, viewModel);" Die zweite ist ViewModel? – happyZZR1400