2013-07-02 96 views
0

我要設法組織一些這樣的觀點:Backbone.js的,不能渲染視圖

define([ 
    // Application. 
    "app" 
], 

function(app) { 

    var Partials = app.module(); 

    Partials.classes = { 
    'AccountNavStart' : AccountNavStart = Backbone.View.extend({ 
     template: 'member/account-nav', 
     serialize: function(){ 
     return { model: this.model }; 
     } 
    }); 

    // Required, return the module for AMD compliance. 
    return Partials; 
}); 

渲染:

new Popover.Views.Default({ 
    content: new Partials.classes['AccountNavStart']().render().$el 
}); 

不過,我得到一個錯誤:

Uncaught TypeError: Cannot call method 'get' of undefined 

enter image description here

任何想法我如何得到這個錯誤?如何解決它?

回答

3

試試這個:

編輯:這是一個骨幹樣板應用程序,所以我更新的答案:

的問題是,如何讓「局部變量」模塊的視圖的$ EL它被渲染後。 我嘗試定義一個模塊並聲明一個Backbone視圖作爲其成員。然後我創建一個視圖實例,然後通過view.render()。$ el鏈接方法調用。它成功地獲得了視圖的$ el,因爲在Backbone Boilerplate render()中有它的默認行爲。本機骨幹渲染功能被設計爲被覆蓋。

我的簡單示例:

模塊聲明(模塊/用戶):

define(["app"], 

function(app){ 
    var User = app.module(); 

    User.Views.Item = Backbone.View.extend({ 
     template: "user/item", 
     tagName: "li", 
     serialize: function(){ 
      return {model: this.model}; 
     }, 
     initialize: function(){ 
      this.listenTo(this.model, "change", this.render); 
     } 
    }); 

return User; 

});

項目模板(模板/用戶/ item.html)

<a href="#"><%=model.get("name")%></a> 

嘗試獲取視圖的$ EL在路由器初始化呼叫

define([ 
// Application. 
"app","modules/user" 
], 

function(app, User) { 

    // Defining the application router, you can attach sub routers here. 
    var Router = Backbone.Router.extend({ 
    initialize: function(){ 
     app.useLayout("main-layout").setViews({ 
      ".users":new User.Views.Item({model:new Backbone.Model({"name":"cccc"})}) 
     }).render(); 

     //try to access $el. it works 
     console.log(new User.Views.Item({model:new Backbone.Model({"name":"cccc"})}).render().$el); 
    }, 
    routes: { 
     "": "index", 
     "user/:name":"user" 
    }, 

    index: function() { 

    }, 
    user: function(){ 

    } 
    }); 

    return Router; 

}); 

最後我得到了$ EL:

$el!

希望這對你有幫助。

+0

好點:http://backbonejs.org/#View-render「一個很好的約定是在渲染結束時返回這個以啓用鏈接調用。」 – jbl

+0

好了,錯誤消失了,但現在它不呈現模板,只是一個空的div。任何想法爲什麼?渲染被觸發但它不渲染模板 –

+0

我修改了答案,渲染函數將渲染模型數據的視圖模板。 – Chickenrice