Ember的路由器用于pre4

时间:2013-01-24 02:08:43

标签: ember.js ember-router

我正在尝试使用Ember的pre4版本,但我已经卡在了路由器上。

我收到错误消息Uncaught TypeError: Cannot Call method 'map' of undefined

相关代码:

App.Router.map(function() {
  this.route("about", { path: "/about" });
  this.route("favorites", { path: "/favs" });
});

相对documentation

我已经加载了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" });
});

1 个答案:

答案 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。最小化版本针对生产使用进行了优化,因此不包含有助于发现这类问题的有用调试消息。