2

私のプロジェクトでは、アプリケーションのすべてのルートで同じパラメーターを逆シリアル化する必要があります。ApplicationRoute で逆シリアル化を処理することが最善の解決策であったか、それともより良い解決策が存在するかを尋ねています。

ここで疑似例を見つけることができます: http://jsfiddle.net/mbreton/bff7D/

var App = Ember.Application.create({
    LOG_TRANSITIONS: true
});

App.Router.map(function(){
    this.resource('application', {path:"/:globalParam"}, function (){
        this.route('detail', {path:"/detail"});
    });
});

App.ApplicationRoute = Em.Route.extend({
    model: function (params){
        console.log('Params contains globalParam ?', params);
        return params;
    }
});
4

2 に答える 2

0

最後に、EmberJS の貢献者と話をした後です。この問題を処理する最善の方法は、アプリケーション全体をリソースでラップすることです。ここで例を見ることができます: http://jsfiddle.net/mbreton/ztzyK/2/

var App = Ember.Application.create({
    LOG_TRANSITIONS: true
});

App.Router.map(function(){
    this.resource('global', {path:"/:globalParam"}, function (){
        this.route('index');
        this.route('detail');
    });
});

App.IndexRoute = Em.Route.extend({
    redirect: function (){
        this.transitionTo("global.index", {globalParam: "Youhou"});
    }
});

App.GlobalRoute = Em.Route.extend({
    setupController: function (controller, model){
        // only executed at the begining
        console.log('Model', model);
    }
});
于 2013-06-26T09:04:01.257 に答える