我有一个简单的问题,我需要一些解释:
为什么这样做有效:
App.ApplicationAdapter.reopen({
namespace: 'conversations/' + getSubuserEmail(),
});
App.Router.map(function(){
// Routing list to raw namespace path
this.resource('conversations', { path : '/' });
});
这样做并不是:
App.ApplicationAdapter.reopen({
namespace: 'conversations/',
});
App.Router.map(function(){
// Routing list to raw namespace path
this.resource('conversations', { path : '/' + getSubuserEmail() });
});
后者没有触发我的模型钩子,例如,我的URL是:
app.rails.local:3000 /会话/ someEmail
感谢。
编辑:
因此,通过下面的评论,我用以下代码重写了我的路由器:
App.Router.map(function(){
// Routing list to raw namespace path
if(getSubuserEmail()){
this.route('conversations', {path : '/:email'});
} else {
this.route('conversations', { path : '/' });
}
});
专业:
当在网址中找到电子邮件时,我希望ember-data用属于某个子用户的对话填充商店,该子用户的电子邮件与URL中的电子邮件匹配。
如果找不到电子邮件,我希望它能够检索所有子用户的所有对话。我的后端有两条路线。
现在的问题是,当URL中有电子邮件时,我的模型挂钩永远不会被触发,就像ember-data不能识别我的动态段一样。有什么想法吗?
答案 0 :(得分:0)
你不应该在App.Router.map中有任何逻辑。这种结构用于描述您的网址应该如何显示。您需要的配置看起来像
App.Router.map(function(){
this.route('conversations', {path : '/'}, function(){
this.route('index', {path : '/'});
this.route('subuser', {path: '/:email'});
});
});
然后你应该创建实际的路由(如果你使用ember-cli,在app / routes / conversations / index.js和app / routes / conversations / subuser.js中),模板和编写你的代码。要调试您的应用程序,您应该安装扩展程序,ember检查程序(可用于chrome和FF)。它将显示您的所有路线,控制器和其他有用信息。