我正在尝试使用ember和ember数据构建一个github问题跟踪器。 github API是通过节点服务器访问的(并且运行正常),但是我在尝试使用ember的动态段时遇到问题,而且我不确定构建我的路由的最佳方法。模型。
如果我希望网址为/user/repo/issue
,我该如何构建我的路线和模型?
我尝试了动态细分和资源/路线的所有不同组合......
this.resource('user', {path: ':user'}, function(){
this.resource('repo', {path: ':repo'}, function(){
this.resource('issue', {path: ':issue_id'});
});
}); // 1
this.resource('repo', {path: ':userAndRepo'}, function(){
this.resource('issue', {path: ':issue_id'});
}); // 2
this.resource('repo', {path: ':userAndRepo'});
this.resource('issue', {path: ':userAndRepo/:issue_id'}); //3
但我似乎无法让它顺利运作。我试图理解它,撕裂了我的胡子。
我最接近的是:userAndRepo
的合并细分,但是对于我在问题模板中的任何链接,我必须在IssuesController
上明确设置该模型,以便我的链接是{{#link-to 'issues' userAndRepo issue}}
此外,每当我从子issue
路线转回父repo
路线时,我的API就会受到影响。
任何想法或建议将不胜感激。如果我没有很好地解释自己,请道歉。
答案 0 :(得分:0)
数字1是正确的实现。这是一个嵌套资源的简单示例(我很懒,只使用pojos,但你可以看到模型钩子被击中的时候)。
http://emberjs.jsbin.com/EWogUdE/36/edit
http://emberjs.jsbin.com/EWogUdE/36#/
App.Router.map(function () {
this.resource('people', function(){
this.resource('person', {path:':name'}, function(){
this.resource('dog', {path:':dogname'});
});
});
});