2012-11-11 28 views
7

Tôi bắt đầu với Ember và chỉ theo dõi tutorial này. Tôi đã tải về mã nguồn mới nhất từ ​​Ember.js web và tôi có đoạn mã sau:Loại không bắt buộcLỗi: Mẫu đối tượng có thể chỉ là một đối tượng hoặc null trên ember-1.0.0-pre.2

HTML

<!doctype html> 
<html> 
<head> 
    <script src="js/libs/jquery-1.7.2.min.js"></script> 
    <script src="js/libs/ember-1.0.0-pre.2.min.js"></script> 
    <script src="js/libs/handlebars-1.0.0.beta.6.js"></script> 
    <script src="js/app.js"></script> 
</head> 
<script type="text/x-handlebars" data-template-name="application"> 
    Test 
</script> 
</html> 

app.js

App = Em.Application.create(); 

    App.ApplicationView = Em.View.extend({ 
    templateName: 'application' 
    }); 
    App.ApplicationController = Em.Controller.extend(); 


    App.Router = Em.Router.extend({ 
    root: Em.Route.extend({ 
     index: Em.Route.extend({ 
     route: '/' 
     }) 
    }) 
    }); 

    App.initialize(); 

Có vẻ như một ví dụ khá đơn giản, nhưng tôi không thấy hai điều sau:

1) Tại sao nguồn phát ra lỗi này cho tôi lỗi này:

Uncaught TypeError: Object prototype may only be an Object or null 

Trên dòng 18 của mã ember.

2) Tại sao tôi cứ bị lỗi uncaught này, nếu tôi đã xác định mẫu:

Uncaught Error: <App.ApplicationView:ember143> - Unable to find template "application". 

Trả lời

5

Hãy thử đặt các mẫu ứng dụng trước khi tay lái.

<!doctype html> 
<html> 
<head> 
    <script type="text/x-handlebars" data-template-name="application"> 
    Test 
    </script> 
    <script src="js/libs/jquery-1.7.2.min.js"></script> 
    <script src="js/libs/handlebars-1.0.0.beta.6.js"></script> 
    <script src="js/libs/ember-1.0.0-pre.2.min.js"></script> 
    <script src="js/app.js"></script> 
</head> 
</html> 
+0

Wow. Điều đó đã làm các trick. Ngoài ra tôi cần phải thêm vào nguồn tay lái trước khi thêm ember. Tại sao tôi cần phải đặt mẫu ứng dụng trước khi xử lý? – Nobita

+0

App.initialize() chạy tất cả các LoadHooks Ember, một trong số đó là bootstrap tải tất cả các mẫu. Nếu bạn gọi App.initialize() sau khi mẫu, nó sẽ hoạt động. Nếu bạn không gọi nó, nó sẽ khởi động tự động. [https://github.com/emberjs/ember.js/blob/master/packages/ember-handlebars/lib/loader.js](https://github.com/emberjs/ember.js/blob/master/ packages/ember-handlebars/lib/loader.js) – delwyn

+0

Vì vậy, bạn không thực sự phải đặt các thẻ body? O_O –

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