Itérer à travers un objet de braise
J'ai de Braise.Objet qui est utilisé comme une base clé/valeur dictionnaire. Les noms des touches sont dynamiques et ce que je voudrais être en mesure de faire est de faire une itération sur ces propriétés. Semble que ce devrait être facile, mais les recherches google, et mes collective casse-tête ne semble pas au point, à l'évidence, la réponse que j'attendais.
Pour la suite de la pseudo code:
App.MyObject = Ember.Object.extend({
randomComputedProperty: function() {
return "foobar";
}
}
$object = new MyObject.create(someBigAndUnpredictableNameValueHash);
Ma solution idéale serait de résoudre pour que ce code me permettrait de discerner rapidement:
- Critique: un tableau de noms de propriété que
object
a - Idéalement: un tableau de la propriété des noms de
object
a - Cerise-sur-le-Haut: un tableau de propriétés calculées qui incluent des setters le long de lecture
De toute façon vous avez des idées?
----- Mise à JOUR -----
À être un peu plus explicite à propos de mon précis de cas d'utilisation. La fiction MyObject
est en fait une propriété qui vient de l'un de mes modèles:
App.MyModel = DS.Model.extend({
prop1: DS.attr('string'),
prop2: DS.attr('number'),
prop3: DS.attr('my-object')
}
Où une Transformation de l'objet est configuré pour gérer la sérialisation/désérialisation:
App.MyObjectTransform = DS.Trnasform.extend({
deserialize: function(serialized) {
return App.MyObject.create(serialized)
},
deserialize: function(deserialized) {
return deserialized;
}
}
De cette façon, lorsque je travaille avec MyModel
dans un guidon de modèle je peux faire quelque chose comme:
{{prop1}}
{{prop2}}
{{#each prop3}}
{{key}} = {{value}}
{{/each}}
source d'informationauteur ken
Vous devez vous connecter pour publier un commentaire.
En Ember v2.0.0-beta.1 vous pouvez utiliser
{{each-in}}
helper qui permet d'itérer sur des clés d'objet et de leurs valeurs dans vos templates.Par exemple, l'échantillon de l'objet:
Instancié de cette façon:
Et itéré dans le modèle à l'aide de
{{each-in}}
helper:Produit les résultats suivants:
JSBin de le démontrer.
Il vaut de mentionner que l'utilisation de
{{each-in}}
helper:Merci @Kingpin2k pour le rappeler. Démonotez que la mise à jour de
prop1
n'est pas reflété dans les DOM.Voici quelques idées.
De l'objet Clés de la méthode 1
Vous pouvez effectuer une itération sur les propriétés et filtrer les clés de la chaîne de prototype (à l'aide de le
hasOwnProperty()
méthode):De l'objet Clés de la méthode 2
Sur les navigateurs les plus récents que vous pouvez obtenir directement un tableau des propriétés de l'objet à l'aide de le
de l'Objet.les touches()
méthode:De braise.Objet les propriétés calculées
Braise fournit un moyen pour effectuer une itération sur les valeurs des propriétés d'une classe à l'aide de la
eachComputedProperty()
méthodeJSBin exemple illustrant ces méthodes
Mise à jour
Vous pourriez avoir une propriété calculée sur votre modèle de ré-organise le
MyObject
's données dans un tableau qui peut ensuite être affiché par le guidon:Si
prop3
:puis
prop3PropertyArray
serait:qui peuvent ensuite être affichées dans le guidon à l'aide d'un
{{#each}}..{{/each}}
helper:Mise à jour JSBin exemple