2012-02-10 62 views
13

我有一個非常簡單的Ember.js應用程序,它可以在IE和Chrome中正常工作,但在Firefox(9.0.1和10.0)中失敗。任何理由?下面的代碼:爲什麼Ember.js應用程序在Firefox中失敗?

<!doctype html> 

<html> 
<head> 
    <title>Template Name</title> 
</head> 
<body> 
    <script type="text/x-handlebars" data-template-name="my-template"> 
     {{App.user.name}} 
    </script> 

    <div id="container"></div> 

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script type="text/javascript" src="http://cloud.github.com/downloads/emberjs/ember.js/ember-0.9.4.js"></script> 

    <script type="text/javascript"> 
     window.App = Ember.Application.create(); 

     App.user = Ember.Object.create({ 
      name: 'John' 
     }); 

     App.view = Ember.View.create({ 
      templateName: 'my-template' 
     }); 

     App.view.appendTo('#container'); 
    </script> 
</body> 
</html> 
+0

您遇到的錯誤是什麼? – Veebs 2012-02-10 05:53:23

回答

13

錯誤在Firefox是

uncaught exception: Error: <Ember.View:ember143> - Unable to find template "my-template". 

這似乎表明,模板腳本尚未在其中的應用程序執行點進行評估。解決方案是等待onload。包裹你的appendTo這樣的:

$(function() { 
    App.view.appendTo('#container'); 
}); 
+7

您也可以將該調用放入Ember應用程序的ready回調中:'App = Ember.Application.create({ready:function(){App.view.appendTo('#container');}});'。 – 2012-02-10 10:47:18

+0

謝謝。 ember.js文檔頁面沒有提到ready函數。這個ember-starter-kit也不是這樣構造應用程序的。是否有另一個地方我應該尋找這種信息? – Naresh 2012-02-10 17:49:02

+0

一般來說,準備好的功能和外面應該做什麼?實際上,是否所有Ember對象的創建/定義都進入了jQuery ready()函數,包括創建Empper應用程序? – Naresh 2012-02-10 17:58:15

1

我剛剛經歷了完全相同的問題。我發現這是由於Ember依賴Handlebars造成的。它看起來像版本1.0後,他們刪除了包含Handlebars源代碼。在添加Handlebars庫後,錯誤消失。

1
Ember.Application.create({ 
    ready: function() { 
     App.view.appendTo('#container'); 
    } 
}); 

Tom Whatmore在評論中有正確答案。

顯示在JavaScript控制檯錯誤只有在使用ember.js

的問題是,模板沒有被燼評估,因爲你的代碼,只要執行的unminified版本瀏覽器擊中它,而不是完全創建完成後的應用程序應用程序。