1
我正試圖與Backbone.js握手,並一直遵循Thomas Davis這裏概述的「模塊化」方法。Backbone.js子視圖渲染
我似乎另一視圖中試圖 '包括' 視圖時被卡住如下:
SettingsView.js
define([
'jquery',
'underscore',
'backbone',
'text!templates/settings/settingsTemplate.html'
], function($, _, Backbone, settingsTemplate){
var SettingsView = Backbone.View.extend({
el: $("#interface"),
render: function() {
this.$el.html(settingsTemplate);
}
});
return SettingsView;
});
ScriptView.js
define([
'jquery',
'underscore',
'backbone',
'views/settings/SettingsView',
'models/script/ScriptModel',
'collections/scripts/ScriptsCollection',
'text!templates/script/scriptTemplate.html'
],
function($, _, Backbone, SettingsView, ScriptModel, ScriptsCollection, scriptTemplate) {
var ScriptView = Backbone.View.extend({
el : $("#container"),
render : function() {
this.$el.html(scriptTemplate);
//add the settings view
var settingsView = new SettingsView();
settingsView.render();
}
});
return ScriptView;
});
已更新:我已設法修復t他錯誤,我剛纔意識到爲什麼發生這種情況(params是在錯誤的順序 - DOH !!)
我不再收到錯誤,但我的'SettingsView'仍然沒有出現。當我在'ScriptView.js'內部登錄這個控制檯時,我發現'el'沒有定義,所以我的想法是這是問題的原因......?
感謝
作爲服務器端js新手,無論如何,我恐怕在scriptview.js中幫助不大,'namespaces'中名稱的順序似乎與函數參數的順序不匹配。 (可能是「沒有辦法」的原因)。也似乎人們通常返回視圖本身作爲渲染的結果 – jbl
另外(仍然是一個新手問題),這是什麼。$ el?它不應該是'this.el'或'$(this.el)'嗎? – jbl
謝謝jbl - 是的,我剛剛意識到,我自己因此更新後,)。我現在已經有了工作(我認爲?) - 至少我現在可以在頁面上看到我的子視圖,所以我猜測它沒關係。除了您提到的明顯錯誤,我還將「SettingsView.js」中的渲染方法更改爲: ** var compiledTemplate = _.template(settingsTemplate); (「#interface」)。append(compiledTemplate); ** 這看起來已經成功了! – dooweb