javascript - Backbone.js View ,dom 访问不起作用

标签 javascript backbone.js

我们正在使用 Django 框架开发一个网络应用程序,我们正在使用 Backbone.js 进行 MV 分解。我们有一个 View 并在其上调用渲染,它用新内容换出一个 div#main,如下所示:

var GoalListView = Backbone.View.extend({
el: $('#main'),

template: _.template($("#swap").html()),

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

});

这按我们预期的方式工作(使用模板的内容更改页面),但是在我们创建的下一个 View 中,我们无法访问任何这些新的 DOM 元素。

 el: $('#newId') 

给我们未定义,即使我们在交换的模板中有一个 id 为 newId 的元素。模板交换已经在此时发生,那么为什么我们无法访问新元素?

编辑:谢谢,我同意这是一个时间问题。但是对于事件呢?

events: {
    'keypress #goal-entry': 'createOnEnter'
 },

然后没有选项可以在 DOM 中搜索要附加事件的元素,对吧?

最佳答案

如果要将 $('#newId') 分配给 el,则必须确保它已经在 DOM 中。在我们的例子中,如果你插入用于第二个 View 的元素,你最初不需要定义它但必须将它传递给 initialize():

var SomeView = Backbone.View.extend({
  // do NOT define el or $el or id here
  initialize: function($el) {
    this.$el = $el;
    ... go on do more things...
  }
});

然后在应用程序中您需要的任何位置初始化第二个 View :

var someView = new SomeView($('#someID'));

关于javascript - Backbone.js View ,dom 访问不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11175030/

相关文章:

javascript - 为什么 `this` 指的是全局对象?

javascript - Chai:如何使用 'should' 语法测试未定义

javascript - 在我的情况下主干验证方法不会触发

javascript - Backbone.js 将模型绑定(bind)到 View 时出错

javascript - 转换 Backbone.js 应用程序以与 parse.com 通信

javascript - 如何设置Backbone View属性?

javascript - JSON 输入的意外结束通过请求获取 Instagram JSON 数据

用于测验的 Javascript 正则表达式

javascript - 传单:每个标记上的自动打开弹出窗口

javascript - RequireJS 工作不一致