2012-02-10 34 views
13

Tôi có một ứng dụng Ember.js rất đơn giản hoạt động chính xác trong IE và Chrome, nhưng không thành công trong Firefox (9.0.1 và 10.0). Có lý do gì không? Dưới đây là các mã:Tại sao ứng dụng Ember.js này không thành công trong 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

Lỗi bạn đang gặp phải là gì? – Veebs

Trả lời

13

Các lỗi trong firefox là

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

Điều này dường như để cho biết rằng mẫu kịch bản chưa được đánh giá tại điểm mà ứng dụng thực thi. Giải pháp là chờ đợi cho onload. Hãy bọc appendTo của bạn như sau:

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

Bạn cũng có thể đặt cuộc gọi đó vào cuộc gọi lại của ứng dụng Ember: 'App = Ember.Application.create ({ready: function() {App.view.appendTo ('# container');}});'. –

+0

Cảm ơn. Trang doc em.js không đề cập đến hàm sẵn sàng. Bộ kit khởi động ember cũng không cấu trúc ứng dụng theo cách này. Có nơi nào khác tôi nên tìm kiếm loại thông tin này không? – Naresh

+0

Nói chung, những gì nên đi trong các chức năng sẵn sàng so với bên ngoài? Trong thực tế, tất cả các đối tượng Ember nên tạo ra/định nghĩa đi vào bên trong hàm jQuery ready(), bao gồm cả việc tạo ra ứng dụng Empper? – Naresh

1

Tôi vừa trải qua cùng một vấn đề chính xác. Tôi phát hiện ra rằng nó được gây ra do Ember phụ thuộc vào Handlebars. Có vẻ như sau phiên bản 1.0, họ đã loại bỏ việc bao gồm mã nguồn Handlebars. Sau khi thêm vào thư viện Handlebars, lỗi sẽ biến mất.

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

Tom Còn câu trả lời đúng trong phần nhận xét này.

Các lỗi được hiển thị trong giao diện điều khiển javascript chỉ khi bạn sử dụng phiên bản unminified của ember.js

Vấn đề là các mẫu chưa được đánh giá bởi ember vì bạn đang thực hiện càng sớm càng trình duyệt truy cập nó, thay vì sau khi ứng dụng ember đã được tạo hoàn toàn.

Các vấn đề liên quan