Lors du mappage de ko.la cartographie.fromJS valeurs sont nulles
Je travaille avec knockoutjs et je suis en train de remplir ViewModel exemple à partir de données JSON.
Selon knockoutjs documentation je peut utiliser cette instruction:
ko.mapping.fromJS(data, viewModel);
Voici mon 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);
pour une raison quelconque données non renseigné (pledgeVMinstance.nom() n'est pas défini)
à moins que je change l'énoncé:
ko.mapping.fromJS(pledge,{},pledgeVMinstance);
Peut-être quelqu'un peut m'expliquer pourquoi
les choses de cette façon.
Grâce
OriginalL'auteur happyZZR1400 | 2013-01-15
Vous devez vous connecter pour publier un commentaire.
C'est arrivé parce que
ko.mapping.fromJS
a la signature suivante:Où
data
- est-ce que les données json,mappingOptions
- est les instructions de la cartographie des plug comment faire un plan de votre date,viewModel
- est objet pour stocker les données cartographiées.ko.mapping.fromJS(data)
- cette syntaxe pour créer une vue de modèle.ko.mapping.fromJS(data, mappingOptions
) - cela va créer le modèle de vue avec des options particulières.ko.mapping.fromJS(data, {}, viewModel)
- et celui-convers vos données sans les options de configuration et de le mettre à la vue du modèle.Lire la documentation pour mieux comprendre: http://knockoutjs.com/documentation/plugins-mapping.html
ko.mapping.fromJS(data, mappedObject)
où le second argument est un "mappedObject", qui est déjà créé par le plugin de cartographie (donc, il a l'__ko_mapping__
bien défini), il permettra de traiter le deuxième argument est le viewModel et non pas comme les options. Voir: github.com/SteveSanderson/knockout.mapping/blob/master/.... Qui est la façon de la documentation de la mise à jour de l'échantillonko.mapping.fromJS(data, viewModel);
œuvres.Ne le savais pas. Merci.
Ainsi, dans la documentation lorsque vous utilisez 2 prameters -la deuxième est d'options? alors pourquoi il sais "ko.la cartographie.fromJS(données, viewModel);" la seconde est viewModel?
Désolé, vit maintenant thw commentaire ci-dessous - merci beaucoup, maintenant je comprends
Merci, moi aussi je RTFM... j'ai essayé avec deux options sur quelque chose de juste il y a une seconde et ne pouvait pas comprendre ce qui se passait. Beau travail.
OriginalL'auteur Artem Vyshniakov
Basé sur la lecture de la documentation sur Knock-out du site web, je crois que l'appelant:
Va automatiquement créer vous un ViewModel. Cela signifie que vous n'avez pas besoin de déclarer un ViewModel-vous que la cartographie plugin crée un avec des propriétés observables.
Après avoir appelé ce, pour le première fois vous pouvez ensuite utiliser
De mettre à jour votre ViewModel de données, par exemple après avoir chargé le plus de données via une requête ajax.
La solution pour résoudre ce devrait être:
OriginalL'auteur Stokedout