EMBER URL包含undefine而transitionToRoute

时间:2013-09-23 17:41:10

标签: ember.js

当我尝试过渡到另一条路线时,我得到的是#/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)

问题

  1. 如何获得正确的网址?
  2. 我是否正确地实现了这一目标?

  3. 更新时间: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

1 个答案:

答案 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模型。

我认为最后一个版本就是你所追求的版本,但你的问题并不是很清楚。