2013-02-12 60 views
0

我遇到了下劃線模板的問題。marionettejs中的下劃線模板屬性未定義

我在應用程序啓動時獲取當前用戶。所以我通過傳遞ID來創建一個實例,我從cookie中獲取該ID。我將這個模型傳遞給視圖並在那裏獲取它(它並不重要,我這樣做是異步的)。

我得到require.js插件(VAR MSG)一些國際化,所以我使用的功能serializeData

if (this.model.attributes.name) { 
    msg.model = this.model.toJSON(); 
} 

return msg; 

在我下劃線的模板,我想如果可能的話,顯示的用戶名,所以我做

<% var model = model; if (model) { %> 
    <%= model.name.givenName %> 
<% } %> 

我想通了,如果我不叫var model = model我甚至不能檢查其存在通過if (model),因爲它會拋出一個undefined error

我對此感覺有點不好,因爲我不知道如何做得更好。也許我應該使用手柄或小鬍子而不是微型模板。我如何解決這個醜陋的問題?

回答

0

你應該檢查這樣

if (typeof model != "undefined" && model.name != undefined && model.name.givenName != undefined) { 
    ... 
} 

它是與JavaScript的怪異語法。

+0

與「怪異語法」沒有任何關係,它與使用['with']的Underscore模板有關(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/with)使用一個對象來模擬一堆局部變量。查看已編譯模板函數的'source'屬性,您將看到'with'。 – 2013-02-12 17:47:39