javascript - Backbone.js 初始化函数——我为什么需要它?

标签 javascript jquery backbone.js

我最近尝试使用 Backbone,想问一个基本问题。此 View 如您所料呈现:

(function($){

var ListView = Backbone.View.extend({
tagName: 'div',
el: $('header'), 

initialize: function(){
  _.bindAll(this, 'render'); 

   this.render(); // not all views are self-rendering. This one is.
},


render: function(){
  $(this.el).html("<ul> <li>hello world</li> </ul>");
}
});

  var listView = new ListView();
})(jQuery);

我的问题是,为什么我不能没有初始化函数并把它放在:

(function($){


var ListView = Backbone.View.extend({
tagName: 'div',
el: $('header'), 


render: function(){
  $(this.el).html("<ul> <li>hello world</li> </ul>");
}
});

this.render(); //No html is rendered on the page


var listView = new ListView();
})(jQuery);

查看源码发现initialize函数默认是一个空函数,这让我很吃惊。我觉得答案很简单,希望有经验的 Backbone.js 开发人员提供智慧。谢谢!

最佳答案

我认为问题是在调用 this.render() 时,“this”指的是模块的上下文,而不是主干 View 。如果重构代码以删除 this.render() 行并在创建 listView 实例后添加 listView.render()应该可以解决问题。

总之,在这种情况下您不需要initialize 函数。

关于javascript - Backbone.js 初始化函数——我为什么需要它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18211429/

相关文章:

jquery - Highcharts导致IE运行缓慢

jquery - 使用 Fancybox 2 时如何正确调整文本内容大小?

jquery - 随着 jQuery DOM 操作(添加/删除/等)的内容更改,页面页脚在 View 中上下跳动

javascript - Backbone View 上的 this.remove() 使 el 消失

javascript - 使用 BackboneJS 从 subview 调用 View 函数

javascript - 如何在桌面上模拟移动(安卓)浏览器

javascript - React-on-Rails,传递和格式化 props?

类似于 Backbone.js 的 javascript 继承

javascript - 无法将函数作为值传递给 setAttribute

javascript - 动态添加文本框和文本区域