0

我的 pre 2 中有以下代码

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

它正确绑定了“toolbarController”内容,模板/视图将反映此数据..

现在我试图通过在 setupController 中设置工具栏控制器的内容来在 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告诉IndexController它需要什么,并实际setupToolbar设置您的工具栏。这是建立另一个与IndexController.

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应该负责设置其他不属于. 如果你真的需要这个功能,它应该像我们上面所做的那样自己完成。IndexControllerIndexController

于 2013-02-17T03:39:59.737 回答