2012-04-16 71 views
2

我有一些問題獲取Ember.js拿起和呈現句柄模板文件。我得到了我的瀏覽器的調試控制檯以下錯誤:無法獲取模板部分呈現在Ember.js

Error: <(subclass of Welcome.LoginView):ember166> - Unable to find template "login_view".

我在emberjs代碼下面的代碼在我的app.js文件:

Welcome = Ember.Application.create(); 

Welcome.LoginView = Ember.View.extend({ 
    templateName: 'login_view' 
}); 

我也有我的指數下面的代碼片段。 HTML文件:

<script type="text/x-handlebars"> 
    {{view Welcome.LoginView}} 
</script> 

最後,相對於app.js文件我有文件模板/ login_view.handlebars,其中包含模板的內容來呈現:

<form class="form-inline"> 
    <fieldset> 
    <input type="text" name="email" placeholder="email address"> 
    <input type="password" name="password" placeholder="password"> 
    <button class="btn btn-primary" type="submit">Sign In</button> 
    <!-- ... --> 
    </fieldset> 
</form> 

該錯誤似乎表明它無法找到句柄模板。當我查看生成的HTML時,我在頁面上看不到上述表單。

任何人都可以闡明我做錯了什麼嗎?

回答

4

從你的問題我假設你沒有使用一些工具,它爲你預編譯句柄模板。 Ember在Ember.TEMPLATES陣列中查找模板 - 它不會自動查找位於templates/並以.handlebars結尾的模板。如果沒有爲您編譯模板的構建步驟,您必須自行完成。

這可能聽起來很複雜,但它是那麼容易,因爲以下幾點:

Ember.TEMPLATES["login_view"] = Ember.Handlebars.compile('TEMPLATE CODE'); 

你必須確保你想用它之前發生此模板定義。


另一種解決方案是將您的模板內聯到您的index.html並添加一個data-template-name="login_view"屬性的腳本標籤:

<script type="text/x-handlebars" data-template-name="login_view"> 
    <form class="form-inline"> 
    <!-- ... --> 
    </form> 
</script> 

但是,如果你的項目有許多模板,那麼我會建議你採用構建工具,爲您提供第一個選擇。


相關問題:Is it possible to load a Handlebars template via Ajax?