1

当我试图过渡到另一条路线时,我得到#/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(版本:v1.0.0-77 2013-09-09)andember-data.js(版本:v1.0.0-beta.1 2013-09-09)

问题

  1. 如何获得正确的 URL?
  2. 我是否以正确的方式实现这一目标?

更新:2013-9-25

我的数据结构:

我有几个projects,每个project我都有几个boards,以后我会comps在每个中放几个board

我的用户界面意图

' / '----------> 一个链接,显示项目列表

' /projects '---------->projects 列表,每个链接到子路由。eg:"projects/1"

' /projects/1 '------------>boards 列表,属于proj1

对于最后一条路线“/projects/1”,“/projects/1/boards”听起来更好吗?

对未来有什么建议comps吗?' /projects/1/boards/1/comps ' 听起来有点多余吗?

直到现在,我对undefinedin URL 的主要担忧仍未解决。:(


更新 2013-9-26

问题解决了!!!!!!

我稍后会放代码。

谢谢@chooper and @Fred Jiles

建议:emberjs 嵌套动态路由段返回 null 并且无法更新子记录

4

1 回答 1

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用作 URL 但board模型。

我认为最后一个版本是您所追求的,但从您的问题中并不太清楚。

于 2013-09-23T18:28:29.813 回答