0

我最近开始使用 Ember.js 和 Ember-CLI,我很兴奋。但是有些事情对我来说不是很清楚。

这是我的路由器:

this.resource("authenticated", { path: '/' }, function() {
  this.resource("contacts", function() {
    this.resource("contact", { path: ':id' });
  });

  this.resource("chats", function() {
    this.resource("chat", { path: ':id' });
  });

  this.resource("settings", function() {
    this.resource("setting", { path: ':id' });
  });
});

问题是 - 为什么在第二次嵌套“解析器”开始在“已验证”资源之外查找对象?

例如

my-app/pods/chats/index/view

但预期 my-app/pods/authenticated/chats/index/view

为什么错过了“身份验证”?

4

1 回答 1

0

您的经过身份验证的路由未应用于 url,因为您将其 url 分配给了 root: { path: '/'}

您应该将路径更改为“已验证”或将其全部删除:

this.resource("authenticated", function() { ... });

但是,现在,当用户导航到my-app/pods/authenticated. 如果您仍想将身份验证作为索引呈现,则应为嵌套资源添加前缀:

this.resource("authenticated", { path: '/' }, function() {
    this.resource("contacts", { path: '/authenticated/contacts' }, function() {
        ...
    });

    this.resource("chats", , { path: '/authenticated/chats' }, function() {
        ...
    });

    ...
});

我希望这对你有所帮助。

于 2015-01-17T14:26:18.340 回答