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".
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
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
Vì vậy, bạn không thực sự phải đặt các thẻ body? O_O –