0

を作成しようとしていますEmber.Routeが、現在のルートのパスを知るために対応するテンプレートが必要です。そのためのものがあることは知ってApplicationController.currentPathいますが、私のルートでsetupController()は を取得できますが、プロパティApplicationControllerを取得すると が返されます。currentPathundefined

なぜそうなのですか?

これは私のコードです(問題だけを示すために簡略化されています):

AxpoEM = Ember.Application.create({});

AxpoEM.Router.map(function() {
    this.route('something', { path: '/'})
});

AxpoEM.SomethingRoute = Ember.Route.extend({
    setupController: function(controller, model) {
        var path = this.controllerFor('application').get('currentPath');
        controller.set('path', path);
    }
});

これが HTML です。

<script type="text/x-handlebars" data-template-name="something">
  Path: {{path}}    
</script>

これは(非)動作フィドルです:

http://jsfiddle.net/Nxq6K/2/

4

2 に答える 2

1

を使用してApplicationController、を注入すると、これが機能しますSomethingControllerneeds

AxpoEM.SomethingController = Ember.ObjectController.extend({
    needs: ['application'],
    path: function() {        
        return this.get('controllers.application.currentPath');
    }.property('controllers.application.currentPath')
});

更新されたフィドルhttp://jsfiddle.net/marciojunior/bDUyN/

于 2013-10-30T18:46:17.307 に答える
0

解決策を見つけました。にアクセスする必要はありません。各ルートApplicationControllerにプロパティがあります。routeName

AxpoEM.SomethingRoute = Ember.Route.extend({
    setupController: function(controller, model) {
        var path = this.get('routeName');
        controller.set('path', path);
    }
});

固定フィドル: http://jsfiddle.net/Nxq6K/3/

于 2013-10-31T08:46:16.457 に答える