2012-09-27 57 views
1

我在項目視圖中顯示模型時遇到了問題。 當前在backbone.marionette中使用require.js。itemview上的模型未顯示

這是我的頭部模板:

// header.js 
define([ 
    "jquery", 
    "underscore", 
    "marionette", 
    "user", 
    "userSession", 
    "text!../../tpl/header_template.html" 
    ], function ($, _, Marionette, User, UserSession, HeaderTemplate) { 

    return Marionette.ItemView.extend({   
    template: HeaderTemplate, 

    initialize: function(){ 
     alert(UserSession.firstName + " " + UserSession.lastName) 
    }, 

    onRender: function(){ 
     alert(UserSession.firstName + " " + UserSession.lastName) 
    }, 

    model: new User({ 
     lastName: UserSession.lastName, 
     firstName: UserSession.firstName 
     }) 
    }); 
    }); 

這是模板代碼段

Logged in as <%= firstName %> <%= lastName %> 

與此代碼時,我嘗試顯示ItemView控件

// attached the view 
layout.header.show(new HeaderView()); 

當我運行此代碼,視圖呈現正常,但模型(名字和姓氏)數據不正確。名字和姓氏都是空的。奇怪的是,它們都在初始化和onRender上,它們都正確地顯示名字和姓氏。

有誰知道如何解決這個問題?

回答

2

我認爲你應該做這樣的:

initialize: function(){ 

    this.model = new User({ 
     lastName: UserSession.lastName, 
     firstName: UserSession.firstName 
    }); 
} 
+0

哇!謝謝!試圖解決這個問題需要數小時,因爲我可以直接附加模型而無需隱式設置模型。 – hrusli

+0

你也可以在創建視圖時傳遞模型作爲參考:'layout.header.show(new HeaderView(model:UserModel));' – Ingro

+0

好的ingro。 fwiw,原始代碼因爲沒有在視圖中指定'el:$(「#whatever」)''的原因而失敗:http://lostechies.com/derickbailey/2011/11/09/backbone-js-對象文字的視圖事件,jQuery的和-EL / –