24-06-2015, 10:57 AM
Bonjour
J'utilise knockout.js pour générer l'ensemble de ma page web (template / mvvm)
ko permet de "binder" les données avec la page html et, jusqu'à présent, faisait tout ce que je voulais comme je le voulais (je sais qu'il a des limitations, mais pas pour moi)
Jusqu'à la semaine dernière où je me suis retrouvé avec une fonctionnalité qui n'existait pas forcément.
En effet ko permet de binder une donnée seule ( ko.observable() ) ou un tableau de données (ko.observableArray() )
Or je cherche à avoir un "dictionnaire" (clef => valeur) afin de retrouver mes petits rapidement.
grosso modo je veux pouvoir accéder à ma donnée par toto["leBonId"] or, même si ça y ressemble, en JS ce n'est pas un tableau donc une structure.
J'ai vu une méthode sur le net qui enrichit ko en créent un observableDictionnary mais je la trouve très riche par rapport à mon besoin (juste pouvoir pointer sur la bonne donnée.
du coup j'ai écrit ce code :
je crée donc ma structure cible (this.data) qui est indicée, et je crée un tableau pour l'initialisation de mon tableau d'observable
Ma question : est ce que j'ai dupliqué les données en mémoire (ie les MapContentModel) 3 fois : contents, this.data, this.contents.
Ou bien ai je juste des équivalents de pointeurs qui pointent sur les mêmes objets en mémoire ?
J'utilise knockout.js pour générer l'ensemble de ma page web (template / mvvm)
ko permet de "binder" les données avec la page html et, jusqu'à présent, faisait tout ce que je voulais comme je le voulais (je sais qu'il a des limitations, mais pas pour moi)
Jusqu'à la semaine dernière où je me suis retrouvé avec une fonctionnalité qui n'existait pas forcément.
En effet ko permet de binder une donnée seule ( ko.observable() ) ou un tableau de données (ko.observableArray() )
Or je cherche à avoir un "dictionnaire" (clef => valeur) afin de retrouver mes petits rapidement.
grosso modo je veux pouvoir accéder à ma donnée par toto["leBonId"] or, même si ça y ressemble, en JS ce n'est pas un tableau donc une structure.
J'ai vu une méthode sur le net qui enrichit ko en créent un observableDictionnary mais je la trouve très riche par rapport à mon besoin (juste pouvoir pointer sur la bonne donnée.
du coup j'ai écrit ce code :
for(var i=0; i<nb; i++){
contents[i] = this.data[ data.map.paths[i].id ] = new MapContentModel(data.map.paths[i]);
}
this.contents = ko.observableArray(contents);
je crée donc ma structure cible (this.data) qui est indicée, et je crée un tableau pour l'initialisation de mon tableau d'observable
Ma question : est ce que j'ai dupliqué les données en mémoire (ie les MapContentModel) 3 fois : contents, this.data, this.contents.
Ou bien ai je juste des équivalents de pointeurs qui pointent sur les mêmes objets en mémoire ?