我想我错过了一些非常微不足道的事情。我创建了Backbone View
如下(不扩展Backbone.View
):
var PlayersView = new Backbone.View({
initialize: function() {
this.render();
},
render: function() {
console.log("hello World");
}
});
但是当我运行此代码时,它不会记录任何内容。当我明确地执行:PlayersView.render();
时,它不起作用。
但以下代码有效:
var PlayersView = Backbone.View.extend({
initialize: function() {
this.render();
},
render: function() {
console.log("hello World");
}
});
var playersview = new PlayersView();
答案 0 :(得分:1)
要添加到构造对象的View
构造函数does not accept properties。它接受一些特殊选项,如'model','tagName'等。但是,您的第一个代码段中的initialize(...)
和render(...)
属性实际上会被忽略。
提供initialize
,render
的正确方法是使用Backbone.View.extend({...})
。
答案 1 :(得分:0)
来自http://backbonejs.org/#View-extend
<强>延伸强>
Backbone.View.extend(properties,[classProperties])开始使用 通过创建自定义视图类来查看视图。你想要覆盖 渲染功能,指定声明性事件,也许是 视图的根元素的tagName,className或id。
换句话说,您的自定义渲染/初始化函数未覆盖您的第一个视图的渲染方法。
使用extend
时,您实际上让Backbone了解您希望使用自己的方法而不是“默认”方法。