Backbone.js : changement de pas de tir sur le modèle.modifier()

Je suis face à un "événement de changement de pas de tir" de l'émission sur Backbone.js =/

Ici mon point de vue de l'Utilisateur modèle :

    window.UserView = Backbone.View.extend({

        ...

        initialize: function()
        {
            this.model.on('destroy', this.remove, this);

            this.model.on('change', function()
            {
               console.log('foo');
            });
        },

        render: function(selected)
        {
            var view = this.template(this.model.toJSON());

            $(this.el).html(view);

            return this;
        },

        transfer: function(e)
        {                
            var cas = listofcas;

            var transferTo = Users.getByCid('c1');
            var transferToCas = transferTo.get('cas');

            this.model.set('cas', cas);
            console.log('current model');
            console.log(this.model);

            //this.model.change();
            this.model.trigger("change:cas");
            console.log('trigger change');

            transferTo.set('cas', transferToCas);
            console.log('transferto model');
            console.log(transferTo);

            //transferTo.change();
            transferTo.trigger("change:cas");
            console.log('trigger change');

        }

    });

Ici, le modèle de l'Utilisateur :

window.User = Backbone.Model.extend({

        urlRoot: $('#pilote-manager-app').attr('data-src'),

        initialize: function()
        {
            this.set('rand', 1);
            this.set('specialite', this.get('sfGuardUser').specialite);
            this.set('name', this.get('sfGuardUser').first_name + ' ' + this.get('sfGuardUser').last_name);
            this.set('userid', this.get('sfGuardUser').id);
            this.set('avatarsrc', this.get('sfGuardUser').avatarsrc);
            this.set('cas', new Array());

            if (undefined != this.get('sfGuardUser').SignalisationBouclePorteur) {

                var cas = new Array();

                _.each(this.get('sfGuardUser').SignalisationBouclePorteur, function(value)
                {
                    cas.push(value.Signalisation);
                });

                this.set('cas', cas);

            }
        }
    });

Dans le modèle Utilisateur, il y a le "cas" de l'attribut, qui est un tableau d'objets.

J'ai lu dans d'autres sujets que les événements de changement ne sont pas le feu sur le modèle.définir si les attributs ne sont pas une valeur.

Alors, j'essaie de déclencher directement l'événement de changement de modèle.changement de méthode.
Mais, je n'ai pas de "foo" journal de ma console ...

  • Pour l'instant, j'ai résolu ce problème en ajoutant un 'rand' attribut sur mon modèle. Je l'ai mis à une nouvelle valeur lorsque je veux le feu événement de changement =/
  • Heh heh. La solution temporaire qui sonne un peu hacky bien. 🙂 Si votre cas de l'attribut est en effet un attribut sur le modèle de l'Utilisateur, l'évolution de la User.set({cas:[array]}) doit déclencher l'événement de changement de m'pense. C'est toujours hacky, mais vous pouvez toujours utiliser le model.change() pour déclencher manuellement le changement, et le changement:l'attribut d'événement. Vous n'êtes pas en passant {silent:true} n'importe où êtes-vous? Pouvons-nous voir votre modèle d'Utilisateur code?
  • Salut Orangewarp, merci pour votre réponse 🙂 j'ai ajouté le modèle de l'Utilisateur sur le poste, c'est très simple. Comme d'autres ppl dire, de la colonne vertébrale n'a pas de déclenchement d'un événement de changement si l'attribut n'est pas la valeur. Et j'ai déjà essayer de déclencher manuellement le modèle.modifier(), ça ne fonctionne pas comme je l'ai dit ^^
InformationsquelleAutor Atyz | 2012-03-28