如何构建Ember.js应用程序,以便从itemControllers访问应用程序状态



我有一组模型,每个模型都在控制器上存储一些应用程序持久状态。我想在应用程序的其他地方访问此状态,但我不确定具体如何访问。

这里有一个JS Bin,它有一个精简版的应用程序,展示了我想要做的事情:在"Boxes"路线上,我想显示点击的小部件的数量,但从BoxController我不知道如何访问具有该属性的WidgetController

如果我正确理解了指南,我应该能够使用needs将一个控制器注入另一个控制器,但当我使用itemController将每个模型封装在自己的控制器实例中时,这并不适用。

我会把它分成三部分。。。


1) 向包含已检查小部件的App.WidgetsController添加计算属性。类似的东西

clickedWidgets: Ember.computed.filterBy('@this', 'hasBeenClicked', true)

2) 将needs: ['widgets']添加到App.BoxController


3) 更改App.BoxControllerclickedWidgets计算属性,以从App.WidgetsController中获取点击的小工具列表,并通过匹配框的小工具过滤该列表。

clickedWidgets: function() {
  return this.get('controllers.widgets.clickedWidgets')
    .filterBy('box', this.get('model')).length;
}.property('controllers.widgets.clickedWidgets.[]')

你可以在这里看到一个工作垃圾箱:http://jsbin.com/yizafe/1/edit

这应该对您有效,是的,needs:['widgets']是可行的:http://jsbin.com/tunuj/1/edit?html,js,输出

最新更新