【问题标题】:Problems set listener问题集监听器
【发布时间】:2013-11-18 16:33:10
【问题描述】:

我尝试为模型配置一个监听器。我有一个包含方法渲染的主要视图(是一个表):

render: function(){
   sesiones.each(function(sesion){
      var view = new AuditoriaView({ aModel: sesion });
      this.$el.append(view.render());
   }, this);
   return this;
}

并有一个辅助视图,代表一行(AuditoriaView):

initialize: function(aModel){
   this.model = aModel;
   // Cada vez que el modelo cambie, vuelve a renderizar
   this.listenTo(this.model, 'change', this.render);
},
render: function(){
   this.$el.html("blablablablabla");
   return this;
}

此代码失败,并带有消息:

Uncaught TypeError: Object # has no method 'on'

在 AuditoriaView 行中:

this.listenTo(this.model, 'change', this.render);

有什么想法吗?

【问题讨论】:

    标签: backbone.js model views


    【解决方案1】:

    您实际上并没有传递模型,而是传递了一个对象。您可以像这样直接传递模型:

    var view = new AuditoriaView(aModel);
    

    或从参数中获取aModel

    initialize: function(options){
        this.model = options["aModel"];
        // Cada vez que el modelo cambie, vuelve a renderizar
        this.listenTo(this.model, 'change', this.render);
    },
    

    编辑:

    或者像这样传递模型:

    var view = new AuditoriaView({model: aModel});
    

    【讨论】:

    • 不必指定this.model = options["aModel"];。如果在实例化 Backbone.View, this.model` 时传递对象(如果传递了对象 {model:someModel}),则在调用 initialize 之前分配。其他一些选择属性也是如此。
    猜你喜欢
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2011-08-16
    • 2020-05-23
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多