我正在学习 Backbone 和JavaScript。我被一个错误卡住了,这个错误可能与纯JavaScript而不是 Backbone 有关。
在完成Backbone的教程时(不使用requireJS),我发现了下面的代码行。
var FirstSubViewModel = Backbone.View.extend({
render: function() {
var source = $("#vehicleTemplate").html();
var template = _.template(source);
this.$el.html(template(this.model.toJSON()));
this.$el.attr("data-color", this.model.get("color"));
return this;
},
});
我们可以清楚地看到代码returns this
,并且一切正常。
现在我尝试在我自己的代码库中做同样的事情(我已经使用了require.JS。
我的视图模型:有错误:无法运作
define(['backbone'], function(Backbone) {
var FirstSubViewModel = Backbone.View.extend({
template: _.template($('#myChart-template').html()),
render: function() {
$(this.el).html(this.template());
var ctx = $(this.el).find('#lineChart')[0];
return this;
},
initialize: function() {
this.render();
}
});
});
我的控制器:
define(['backbone', 'FirstSubViewModel'], function(Backbone, FirstSubViewModel)
{ var ch = new dashboardModel.chart({});
new FirstSubViewModel({
^^ HERE I GET ERROR
el: '#chartAnchor1',
model: ch
});
});
我的视图模型:工作得很好
define(['backbone'], function(Backbone) {
var FirstSubViewModel = Backbone.View.extend({
template: _.template($('#myChart-template').html()),
render: function() {
$(this.el).html(this.template());
var ctx = $(this.el).find('#lineChart')[0];
// return this; Commented Out!**
},
initialize: function() {
this.render();
}
});
return FirstSubViewModel;
});
如果我在底部使用return FirstSubViewModel
,而不是在render函数中返回它,一切都可以正常工作。但是我想在render function
中尝试return this
,并希望一切都正常工作。我不想在最后使用return FirstSubViewModel
。
在渲染函数中使用“return this”时出错:FirstSubViewModel
不是构造函数
1条答案
按热度按时间mklgxw1f1#
最后一个返回值定义了其他模块中将包含的内容,在本例中是必需的。如果没有此返回值,则此模块返回
undefined
。让我们在控制台中尝试:
TypeError:x不是构造函数
return FirstSubViewModel
是必需的。建议在渲染函数中使用return this
。编码: