Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js`el`和`events`未正确绑定_Backbone.js - Fatal编程技术网

Backbone.js`el`和`events`未正确绑定

Backbone.js`el`和`events`未正确绑定,backbone.js,Backbone.js,由于某种原因,以前工作正常的haveel和events绑定现在停止正常工作 我曾经: User.HeaderView = Backbone.View.extend({ el: '#header', template: _.template($('#header-template').html()), events: { "click .login": "login" }, initialize: function(parentView) {

由于某种原因,以前工作正常的have
el
events
绑定现在停止正常工作

我曾经:

User.HeaderView = Backbone.View.extend({
    el: '#header',
    template: _.template($('#header-template').html()),
    events: {
        "click .login": "login"
    },
    initialize: function(parentView) {
        this.parentView = parentView;
    },
    render: function() {
        this.parentView.render();
        this.el.innerHTML = this.template(/* pass model */);
    }
});
以前,这种方法工作得很好,但由于某种原因,
el
不再正确绑定到DOM中的
#header
。相反,它是用空的
div
实例化的,这很容易确认:如果我用Firebug(
console.log(this.$el.parent().html()
)调试
el
,我会得到:

我期望得到的是:

<div id="header"><ul></ul></div>

您知道如何修复此问题或进一步调试吗?

initialize
需要一个包含您希望传递给视图的选项的对象。在这里,您传递了一个视图,它是一个对象,可能已经设置了
el
属性,覆盖了您在
HeaderView
中声明的属性。请尝试

User.HeaderView = Backbone.View.extend({
    el: '#header',
    template: _.template($('#header-template').html()),
    events: {
        "click .login": "login"
    },
    initialize: function(options) {
        this.parentView = options.parentView;
    },
    render: function() {
        this.parentView.render();
        this.el.innerHTML = this.template(/* pass model */);
    }
});

new HeaderView({parentView:parentView});

initialize
需要一个包含您希望传递给视图的选项的对象。在这里,您传递了一个视图,该视图是一个对象,可能已经设置了
el
属性,覆盖了您在
HeaderView
中声明的属性。请重试

User.HeaderView = Backbone.View.extend({
    el: '#header',
    template: _.template($('#header-template').html()),
    events: {
        "click .login": "login"
    },
    initialize: function(options) {
        this.parentView = options.parentView;
    },
    render: function() {
        this.parentView.render();
        this.el.innerHTML = this.template(/* pass model */);
    }
});

new HeaderView({parentView:parentView});

对我有用谢谢你的提琴。我澄清了一点问题:我实际上使用的是parentView,这可能是问题的一部分。
是一个打字错误,对吧?是的。应该是
    对我有用谢谢你的提琴。我澄清了一点问题:我实际上使用的是parentView,这可能是问题的一部分lem.
    是一个打字错误,对吧?是的。应该是
      非常感谢!!它工作了,还有什么更好的呢?我现在明白了
      初始化
      应该如何使用!非常感谢!!它工作了,还有什么更好的呢?我现在明白了
      初始化
      应该如何使用了!
      User.HeaderView = Backbone.View.extend({
          el: '#header',
          template: _.template($('#header-template').html()),
          events: {
              "click .login": "login"
          },
          initialize: function(options) {
              this.parentView = options.parentView;
          },
          render: function() {
              this.parentView.render();
              this.el.innerHTML = this.template(/* pass model */);
          }
      });
      
      new HeaderView({parentView:parentView});