我在某个地方犯了一个愚蠢的错误,我不能让基础骨干视图得到渲染。有人可以指出我在这段代码中有什么问题吗?
var view = new Backbone.View({
el: 'body',
template: '<p>this is my new template</p>',
render: function() {
console.log('rendering myself');
this.$el.html(this.template);
return this;
}
});
view.render();
PS console.log为空。
答案 0 :(得分:5)
你的语法有点偏,你应该首先定义你的视图然后实例化它。
//define view
var MyView = Backbone.View.extend({
el: 'body',
template: '<p>this is my new template</p>',
render: function() {
console.log('rendering myself');
this.$el.html(this.template);
return this;
}
});
//create view instance
var view = new MyView();
view.render();
答案 1 :(得分:2)
虽然传统的方法是扩展Backbone.view,并实例化视图的新实例(根据Jack的答案),你可以通过将Backbone.View.extend包装在parens中来获得你想要的东西(实例化一个简单的视图): / p>
var view = new (Backbone.View.extend({
el: 'body',
template: '<p>this is my new template</p>',
render: function() {
console.log('rendering myself');
this.$el.html(this.template);
return this;
}
}));
view.render();
这对于“一次性”视图/路由器/等有用,您不打算多次重新实例化。对于大多数情况,Jack的答案中的方法更具可读性(也是有用的)。
答案 2 :(得分:0)
您必须实际创建该视图。
在渲染之前:function(){}
添加
initialize: function(){
this.render();
}
当您要加载页面/视图时,请使用此
$(document).ready( function(){
new view({"el:body});
});
虽然通常应该从Backbone视图扩展视图变量。
所以不是“var view”......它应该是类似的东西 window.myView = Backbone.View.extend({})
请参阅http://backbonejs.org/#View
当视图代表对象时,它更容易管理。