Ember.js 为什么不是';我的内容绑定在pre2上工作,而不是在RC上工作
在我的pre 2中有以下代码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”内容,模板/视图将反映此数
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行定义的。如何绑定属性?你能用一个例子更新你的问题吗?