0

pre 2に次のコードがありました

router.get('contentWithToolbarController').connectOutlet('toolbar', 'toolbar', {
    x1ButtonsVisible: true,
    x2ButtonsVisible: true,
    x3ButtonsVisible: true,
    x4ButtonsVisible: true
});

これは「toolbarController」コンテンツを適切にバインドし、テンプレート/ビューはこのデータを反映します..

今、私はsetupControllerでtoolbarControllerのコンテンツを設定することで、RCで似たようなことをしようとしています。

setupController: function(controller, model) {
    var toolbarController = this.controllerFor('toolbar');
        toolbarController.set('content', {
            x1ButtonsVisible: true,
            x2ButtonsVisible: true,
            x3ButtonsVisible: true,
            x4ButtonsVisible: true
        });
})

しかし、これは機能せず、ビューはこれらの設定に従って更新されません。

私が間違っていることは何ですか?私の仮定のどれが間違っていますか?

4

1 に答える 1

1

もうありませthis.controllerForん。

これsetupControllerは私たちが見るものApp.ToolbarRouteですか?controllerその場合、関数の引数からインスタンスにコンテンツを設定できます。

そうでない場合はneeds、他のコントローラーをセットアップするために使用する必要があります。

ルーター

setupToolbarこのルートに移動するたびにコントローラーでメソッドを呼び出すようにコントローラーに指示します。

App.IndexRoute = Ember.Route.extend({
    setupController: function(controller) {
        controller.setupToolbar();
    }
});

コントローラ

必要なものneedsを に伝え、ツールバーを実際にセットアップするために を使用します。に関連する別のコントローラを設定する責任は、ここにあります。IndexControllersetupToolbarIndexController

App.IndexController = Ember.Controller.extend({
    needs: ['toolbar'],
    setupToolbar: function() {
        var toolbarController = this.get('controllers.toolbar');
        toolbarController.set('content', {
            x1ButtonsVisible: true,
            x2ButtonsVisible: true,
            x3ButtonsVisible: true,
            x4ButtonsVisible: true
        });

        // Is it true?
        console.log(toolbarController.get('content.x1ButtonsVisible'));
    }
});

フィドル: http://jsfiddle.net/pBUK7/

この変更の理由は、 が、 ではない他のコントローラーのセットアップを担当するIndexRouteべきではないIndexControllerためです。この機能が本当に必要な場合は、IndexController上記で行っているように、それ自体で行う必要があります。

于 2013-02-17T03:39:59.737 に答える