2013-10-14 157 views
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'沒有定義,所以我的想法是這是問題的原因......?

感謝

+0

作爲服務器端js新手,無論如何,我恐怕在scriptview.js中幫助不大,'namespaces'中名稱的順序似乎與函數參數的順序不匹配。 (可能是「沒有辦法」的原因)。也似乎人們通常返回視圖本身作爲渲染的結果 – jbl

+0

另外(仍然是一個新手問題),這是什麼。$ el?它不應該是'this.el'或'$(this.el)'嗎? – jbl

+0

謝謝jbl - 是的,我剛剛意識到,我自己因此更新後,)。我現在已經有了工作(我認爲?) - 至少我現在可以在頁面上看到我的子視圖,所以我猜測它沒關係。除了您提到的明顯錯誤,我還將「SettingsView.js」中的渲染方法更改爲: ** var compiledTemplate = _.template(settingsTemplate); (「#interface」)。append(compiledTemplate); ** 這看起來已經成功了! – dooweb

回答

1

我認爲你必須在SettingsView追加到ScriptViewel

var ScriptView = Backbone.View.extend({ 
    el : $("#container"), 

    render : function() { 
     this.$el.html(scriptTemplate); 

     //add the settings view 
     var settingsView = new SettingsView(); 
     settingsView.render(); 

     this.$el.append(settingsView.el); 
    } 
}); 

而關於子視圖一個偉大的職位是this one

我希望它有幫助!