当我尝试过渡到另一条路线时,我得到的是#/projects/undefined
而不是我的预期:#/projects/1
这是我的代码的一部分。我把源代码放在jsfiddle http://jsfiddle.net/kago/ctXqn/
App.ProjectsRoute=Em.Route.extend({
model:function(){
return this.get('store').find('project');
},
actions:{
filterBoardByPid:function(id){
var m = this.get('store').find('board',{pid:id});
this.get('controller').transitionToRoute('boards',m);
}
}
});
App.Router.map(function() {
this.resource('projects',function(){
this.resource('boards',{ path: "/:project_id"});
});
});
我的Ember版本是:
ember.js(Version:v1.0.0-77 2013-09-09)
and
ember-data.js(Version:v1.0.0-beta.1 2013-09-09)
问题
更新时间:2013-9-25
我的数据结构:
我有几个projects
,每个project
我有几个boards
,将来我会在每个comps
中放置几个board
。
我的UI内涵
'/'---------->一个链接,显示项目列表
'/ projects'---------->项目列表,每个链接到sub -route.eg:"projects/1“
'/ projects / 1'----------> board list,属于proj1
对于最后一个路径'/ projects / 1','/ projects / 1 / boards'是否有声音 更好?
对未来的任何建议comps
? '/ projects / 1 / boards / 1 / comps'听起来有点多余吗?
到目前为止,我对URL中undefined
的主要担忧仍未得到解决。 :(
更新2013-9-26
问题已解决!!!!!!
我稍后会把代码放进去。
感谢@chooper and @Fred Jiles
推荐:emberjs nested dynamic route segment returning null and unable to update child record
答案 0 :(得分:1)
需要transitionToRoute('board', m)
。
更新:我还认为您的路线设置不正确。试试这个:
App.Router.map(function() {
this.resource('projects',function(){
this.resource('project',{ path: "/:project_id"});
});
});
这将导致/projects/123
(其中123是id)。或者:
App.Router.map(function() {
this.resource('projects',function(){
this.resource('boards',function(){
this.resource('board',{ path: "/:board_id"});
});
});
});
这将导致/projects/boards/123
(其中123是id)。或者:
App.Router.map(function() {
this.resource('boards', {path: '/projects'}, function(){
this.resource('board',{ path: "/:board_id"});
});
});
这将导致/projects/123
(其中123是id)。这将使用/projects
作为网址,但使用board
模型。
我认为最后一个版本就是你所追求的版本,但你的问题并不是很清楚。