3 votes

Définir dynamiquement la propriété d'une vue dans BackboneJS

App.Views.WidgetAvailable = Backbone.View.extend({
        tagName: 'li',

        className: 'widget',

        template: template('available_template'),

        render: function(){
            this.$el.html(this.template(this.model.toJSON()));
            return this;
        }
    });

Alors j'ai cette vue qui est utilisée par deux collections, le problème est que seule la propriété du modèle est différente dans les deux cas. Ainsi j'essaie de comprendre comment définir la propriété template: dynamiquement.

Est-ce que quelqu'un a une idée de comment faire cela?

Salue,

3voto

tbwiii Points 506

Devrait être aussi facile que cela :

 initialize: function(){
                this.template = options.template;
                return this;
            }

Ensuite, lorsque vous l'appelez :

var view = new App.Views.WidgetAvailable( { template : '...' } );

Merci à mu is too short pour la correction

1voto

Jack Points 6960

Vous pouvez passer des paramètres dans votre méthode initialize, donc vous devriez être capable de simplement passer le modèle.

Par exemple:

App.Views.WidgetAvailable = Backbone.View.extend({

   initialize: function (template) {
           this.template = template(template);

    }
      //le reste de votre code de vue
});

var view1 = new App.Views.WidgetAvailable(template1);
var view2 = new App.Views.WidgetAvailable(template2);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X