Ember.js 为什么不是';我的内容绑定在pre2上工作,而不是在RC上工作

Ember.js 为什么不是';我的内容绑定在pre2上工作,而不是在RC上工作,ember.js,Ember.js,在我的pre 2中有以下代码 router.get('contentWithToolbarController').connectOutlet('toolbar', 'toolbar', { x1ButtonsVisible: true, x2ButtonsVisible: true, x3ButtonsVisible: true, x4ButtonsVisible: true }); 它正确绑定了“toolbarController”内容,模板/视图将反映此数

在我的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
        });
})
但这不起作用,视图也不会根据这些设置进行更新


我做错了什么?我的哪一个假设是错误的?

这个控制器已经没有了

这是我们看到的
App.ToolbarRoute
setupController
?如果是这样,您可以从函数的参数设置
控制器
实例上的内容

如果不是,则需要使用
needs
设置其他控制器:

路由器

指示控制器在每次进入该路线时调用控制器上的
setupToolbar
方法

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

使用
需要
告诉
IndexController
它需要什么,使用
设置工具栏
实际设置工具栏。这就是设置另一个与
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'));
    }
});
小提琴:


此更改的原因是
IndexRoute
负责设置非
IndexController
的其他控制器。如果您真的需要此功能,应该像上面所做的那样在
IndexController
本身中完成。

我现在很困惑。最新的指南特别使用了“controllerFor”,请看,我能够解决这个问题。我的假设是controllerFor在renderTemplate函数中返回了控制器设置,但事实并非如此,实际上setupController是在renderTemplate之前触发的。我修改了renderTemplate,将工具栏模板的控制器与对此的调用相关联。当然,这可能是不情愿的黑客行为。我也会看一下你回复的细节。听起来很混乱。我原来的应用程序通过outlet在模板中嵌入了模板。没有工具栏路由,因为它是给定路由的模板中的模板中的模板。因此,我需要在一个路由中设置它,并为给定路由的视图的不同元素设置所有不同的模板/出口/控制器。您确定不支持“controllerFor”吗?此外,我没有看到最新API文档中记录的“需求”属性,我查看了“Ember.Controller”和“Ember.controllermxin”,您是否在其他地方看到它的文档?我认为文档尚未更新。“controllerFor”仍然可以使用,但在以后的版本中会警告您不推荐使用它。我快要发疯了:)--我在源代码中没有看到它不推荐使用吗,它是围绕第314行定义的。如何绑定属性?你能用一个例子更新你的问题吗?