Javascript 如何在主干中初始化函数后将事件绑定到DOM?

Javascript 如何在主干中初始化函数后将事件绑定到DOM?,javascript,backbone.js,Javascript,Backbone.js,我有一个主干视图,它将一个操作绑定到DOM中的一个元素。问题是调用事件时没有呈现DOM元素。我的代码如下所示: // Change the focus to a full goal view var GoalFullView = Backbone.View.extend({ // Bind the goal full view el: $("#main"), // Events for making changes to the goal events

我有一个主干视图,它将一个操作绑定到DOM中的一个元素。问题是调用事件时没有呈现DOM元素。我的代码如下所示:

  // Change the focus to a full goal view
  var GoalFullView = Backbone.View.extend({

    // Bind the goal full view
    el: $("#main"),

    // Events for making changes to the goal
    events: {
      "keypress #goal-update": "createOnEnter",
    },

    // Cache the template for the goal full view
    template: _.template($("#goal-full-template").html()),

    // Render the goal full and all of its goal updates
    initialize: function() {
      this.render();
      this.collection = new GoalUpdateList;
      this.collection.bind('add', this.addOne, this);
      this.collection.bind('reset', this.addAll, this);

      this.collection.fetch();
    },
如您所见,事件绑定发生在初始化之前,因此它无法定位DOM元素,因为它尚未呈现。如何将事件绑定延迟到初始化之后

编辑1: 嗯,我做了一个控制台日志,它在一个按键上打印出一些东西,但我在我的Chrome开发者控制台中得到了这样的信息:

Uncaught TypeError: Cannot call method 'apply' of undefined

这意味着什么?

正如我所料,问题出在另一个地方

DOM
事件
绑定声明可以在DOM元素real存在之前完成

我认为这个代码示例再现了您正在谈论的情况,并且DOM
事件仍然正确绑定

var View = Backbone.View.extend({
  events: {
    "click #link": "click"
  },

  click: function(){
    console.log( "click event" );
  },

  render: function(){
    this.$el.html( "<a href='#' id='link' onclick='return false'>link</a>" );
  }
});

new View({ el: "body" }).render();​
var-View=Backbone.View.extend({
活动:{
“单击链接”:“单击”
},
单击:函数(){
console.log(“单击事件”);
},
render:function(){
这是。$el.html(“”);
}
});
新视图({el:“body”}).render();​

检查

仅绑定初始化函数中的事件。或者使用委托。也就是说,将事件绑定到父元素,并在事件回调中测试哪个元素触发了事件。我想我一直在使用这种方法,我没有任何问题。。让我检查一下。我不记得名为“按键”的事件,但我记得“按键”。这可能是问题所在吗?(顺便说一句,我喜欢你的用户名:)我用我得到的错误更新了主体。这是可行的,但我遇到了与帖子中描述的完全相同的问题,我希望这是可行的。如果我在initialize方法中声明this.el
,这无关紧要。