Backbone Collection'添加'事件未触发

时间:2014-02-20 12:13:31

标签: javascript backbone.js

我的Collection中有一个事件监听器,它监听'add'事件,当我添加在路由器中添加的示例数据时,它似乎才会触发,但是当我在视图中添加更多模型时,两者的代码如下:

收藏:

Application.Collection.extend({
  name: "todos/todos",
  initialize: function() {
    this.on("add", console.log("added"));
  },
  url: "/todo-application/todos"
});

路由器(这会触发一个事件):

collection = new Application.Collections["todos/todos"]();
var m = new Application.Model({
    title: 'Finish screencast',
    done: true
});
collection.add(m);

查看(这不会触发事件):

Application.View.extend({
  name: "todos/index",
  events: {
    "submit form": function(event) {
        event.preventDefault();
        var attrs = this.serialize();
        this.collection.add(attrs);
        this.$('input[name=title]').val('');
    }
  }
});

视图中的collection.add肯定有效,因为模型已添加到集合中并且显示在屏幕上,但该集合仅在初始时为我提供了console.log()添加样本数据时的页面加载...

编辑:

根据我的Backbone Chrome扩展程序,该事件确实正在触发,但由于某些原因,此事件绑定无效,我尝试使用this.listenTo代替.on

1 个答案:

答案 0 :(得分:6)

在对象上使用on函数时,您将callback绑定到该对象上的event,并且callback必须是函数,就像这样:

this.on("add", function() { console.log("added"); });