我最近开始使用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
为什么错过了"身份验证"?
经过身份验证的路由不会应用于 url,因为您已将其 url 分配给根:{ 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() {
...
});
...
});
我希望这对你有所帮助。