Existe-t-il un moyen de mapper un objet de données JSON à un tableau observable et de faire en sorte que chaque élément du tableau observable soit initialisé dans un type spécifique de modèle de vue ?
J'ai regardé toute la documentation de knockout ainsi que les exemples de knockout et de mapping ici et je n'ai pas trouvé de réponse qui fonctionne pour ce que je cherche.
J'ai donc les données JSON suivantes :
var data = {
state : {
name : 'SD',
cities : [{
name : 'Sioux Falls',
streets : [{
number : 1
}, {
number : 3
}]
}, {
name : 'Rapid City',
streets : [{
number : 2
}, {
number : 4
}]
}]
}
};
Et j'ai les modèles de vue suivants :
var StateViewModel = function(){
this.name = ko.observable();
this.cities = ko.observableArray([new CityViewModel()]);
}
var CityViewModel = function(){
this.name = ko.observable();
this.streets = ko.observableArray([new StreetViewModel()]);
}
var StreetViewModel = function(){
this.number = ko.observable();
}
Est-il possible, avec la structure de données donnée et en utilisant le plugin de mapping de knockout, de faire en sorte que le StateViewModel résultant contienne un observableArray peuplé de 2 CityViewModels, et que chaque CityViewModel contienne un observableArray peuplé de 2 StreetViewModels ?
Actuellement, en utilisant le plugin de cartographie, je suis en mesure d'établir une correspondance avec un modèle StateViewModel, mais les collections 'cities' et 'streets' sont peuplées d'objets génériques au lieu d'instances de mes modèles City et Street View.
Ils finissent par avoir les propriétés et les valeurs observables correctes, mais ce ne sont pas des instances de mes modèles de vue, ce qui est ce que je cherche.