【问题标题】:Dynamically set property of View in BackboneJS在 BackboneJS 中动态设置 View 的属性
【发布时间】:2012-11-15 06:47:05
【问题描述】:
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;
        }
    });

所以我得到了两个集合使用的这个视图,问题是这两种情况下只有模板属性不同。因此,我试图弄清楚如何动态设置 template: 属性。

有人知道怎么做吗?

问候,

【问题讨论】:

  • 当您initialize您的视图时,尝试将其作为参数传入。

标签: javascript backbone.js


【解决方案1】:

应该像这样简单:

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

那么当你调用它时:

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

感谢mu is too short的指正

【讨论】:

  • 选项对象可能会更好(initialize 中的new V({ template: '...' })this.template = options.template),因为它保留了标准构造函数接口。
  • 毕竟这个答案的想法是好的,但它不起作用,评论中描述的事情毕竟完成了工作
【解决方案2】:

您可以将参数传递给您的initialize 方法,因此您应该可以只传递模板。

例如:

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

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

    }
      //the rest of your views code
});

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 2015-07-10
    相关资源
    最近更新 更多