我正在尝试使用Ember的pre4版本,但我已经卡在了路由器上。
我收到错误消息Uncaught TypeError: Cannot Call method 'map' of undefined
。
相关代码:
App.Router.map(function() {
this.route("about", { path: "/about" });
this.route("favorites", { path: "/favs" });
});
我已经加载了Ember.js和jQuery。 Ember pre4也会抛出错误:Uncaught TypeError: Object prototype may only be an Object or null
。
我做错了吗?指南是否未更新?
到目前为止我的代码:
window.App = Ember.Application.create({
ApplicationView: Ember.View.extend({
templateName: 'application'
}),
ApplicationController: Ember.Controller.extend({
}),
SiteView: Em.View.extend({
templateName: 'site-template'
}),
SiteController: Em.ArrayController.extend(),
});
App.Router.map(function() {
this.route("about", { path: "/about" });
this.route("favorites", { path: "/favs" });
});
答案 0 :(得分:1)
我发现您发布的代码没有任何问题。能够在jsbin中运行它,并在添加“site”作为默认路由后,应用程序似乎正在运行。
App = Ember.Application.create({
ApplicationView: Ember.View.extend({
templateName: 'application'
}),
ApplicationController: Ember.Controller.extend({
}),
SiteView: Em.View.extend({
templateName: 'site-template'
}),
SiteController: Em.ArrayController.extend()
});
App.Router.map(function() {
this.route("site", { path: "/" });
this.route("about", { path: "/about" });
this.route("favorites", { path: "/favs" });
});
<script type="text/x-handlebars" data-template-name="site-template">
This is the site template
</script>
<script type="text/x-handlebars">
This is the application template
{{outlet}}
</script>
请参阅jsbin了解工作副本。
我最好的猜测是你的错误来自某些不兼容的jQuery版本,或者因为你没有handlebars.js - 两者都需要运行ember。此外,在开发中一定要使用ember-1.0.0-pre.4.js!而不是ember-1.0.0-pre.4.min.js。最小化版本针对生产使用进行了优化,因此不包含有助于发现这类问题的有用调试消息。