3

我正在尝试构建一个将在 /admin/ 前缀上运行的管理系统。

这是我的路线文件

App.Router.reopen
  location: 'history'
  rootURL: '/admin'

App.IndexRoute = Ember.Route.extend
  setupController: (controller, model) ->
    @controllerFor('application').set('currentRoute', 'home')

当我转到 /admin 时,我收到以下错误:

Uncaught Error: No route matched the URL '/admin' 

我只是从emberjs开始,我的代码是基于这个serie

Ember version: v1.0.0-pre.4
Ember-data current api revision:: 11
4

2 回答 2

3

在旧路由器中,解析路由时会忽略“rootURL”属性。在最新版本的 ember 中,rootURL 似乎只在构建链接时使用。不确定这是错误还是疏忽。作为一种解决方法,请尝试以下方法:

App.Router.map(function() {    
  this.resource("admin",  { path: "/admin" }, function() {
    this.route("other");
  });
});

App.IndexRoute = Ember.Route.extend({
  redirect: function() {
    this.transitionTo('admin');
  }
});
于 2013-01-20T22:51:26.260 回答
1

在讨论 emberjs 中的路由时,这取决于您使用的是哪个版本。1.0pre2 和 1.0pre3 之间有很大的 API 变化。www.emberjs.com 上的文档已经是新 API 的最新版本,并且易于理解。

下面是一个非常小的例子

  • IndexRoute 自动重定向到 '/members' 处所有成员的概览。
  • 基于 ID 的动态路由
  • 序列化/反序列化,以防参数不是“id”而是其他东西。在下面的示例中,它是“refId”(代表参考 ID)。

好吧,这个例子并没有真正比官方文档显示更多。但附加信息总是很好。

所以,希望这会有所帮助。干杯。

App.Router.map(function() {    
  this.resource("members", { path: '/members' });
  this.resource("member",  { path: "/members/:refId" }, function() {
    this.route("delete");
  });
});

App.IndexRoute = Ember.Route.extend({
  redirect: function() {
    this.transitionTo('members');
  }
});

App.MembersRoute = Ember.Route.extend({
  model: function() {
    return App.Member.findAll();
  }
});

App.MemberRoute = Ember.Route.extend({
  model: function(params) {
    return App.Member.find(params.refId);
  },
  // overwrite default serializer (defaults to 'id', member has 'refId')
  serialize: function(model) {
    return { refId: model.refId };
  }
});
于 2013-01-20T22:42:25.277 回答