Magasin/push pour un tableau à une colonne vertébrale Modèle
J'ai ce modèle par défaut:
test.Models.ItemModel = Backbone.Model.extend({
defaults: {
name: 'an item',
units: []
},
Que j'ai ensuite utiliser le code suivant pour définir le Modèle:
addUnit: function(e){
if(e.keyCode == 13){
this.model.set({ 'units' : this.model.get('units').push($('#addUnit').val()) },
{success: function(){
this.render();
}}
);
}
},
Cependant, il ne semble jamais obtenir ajoutés au Modèle de tableau, je fais les choses ici??
Soyez prudent avec ce tableau dans
defaults
, defaults
est peu profonde de copie vous pouvez vous retrouver avec plusieurs modèles de référencement exactement le même tableau qui est (encore) dans defaults
. Une fonction (defaults: function() { return { ... } }
) est plus sûr quand vous avez des tableaux ou des objets dans defaults
.OriginalL'auteur benhowdle89 | 2012-11-30
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que vous êtes en supposant que le
push
méthode est de retourner le tableau entier; au lieu de cela, comme indiqué ici, lepush
méthodeDonc, vous avez besoin de pousser l'élément dans le tableau avant de vous définissez le modèle :
Attention tout de même, cela permettra de modifier quoi que ce soit d'autre que les points de ce tableau, donc si vous faites cela, par exemple:
Si vous voulez éviter cela, ou que vous voulez toujours utiliser une seule ligne de code, vous pouvez utiliser la matrice de
concat
méthode:"change"
événement lorsque vous appelezset
depuis le sous-jacent valeur de l'attribut n'a pas changé (stackoverflow.com/a/11662381/479863), vous devez utiliser une variante de la deuxième (concat
,_.clone
etpush
, ou quelque chose d'autre qui ne touche pas le tableau d'origine) pour obtenir de bons résultats.Certainement une bonne note, @muistooshort. Voulez utiliser la méthode concat à la place. Si vous ne le faites pas, il va modifier le passé dans la matrice.
oui, le changement de l'événement, il n'est pas déclenché avec cette solution, doit être mis à jour
OriginalL'auteur gion_13