我正在學習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