我正在学习Backbone和JavaScript。我被困在一个错误,这个错误可能与纯JavaScript而不是骨干相关。骨干:未捕获类型错误:..不是构造函数
在经历骨干教程(不使用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
而不是在渲染函数中返回this,那么一切正常。但我想在render function
中尝试return this
,并希望一切都能正常工作。最后我不想做return FirstSubViewModel
。
FirstSubViewModel
是不是构造
我已经改变了代码示例。发布问题时,我调整了教程代码。我已经把实际的教程代码。我对这种混乱表示歉意。而且你所说的代码非常糟糕,是我编写的实际代码。而给出的代码只是片段。我曾认为这足以解决问题。 – Unbreakable
所以基本上在教程中,导师在渲染功能中使用“返回这个”。但是我需要返回代码底部的全部类。我正在学习所有这些东西,所以我可能不会采取最佳做法。请引导我为什么问题即将到来。 – Unbreakable
我也想在渲染函数中使用“return this”,但我得到错误。但是当我在代码片段的底部返回整个类时,一切正常。 – Unbreakable