我有一组模型,每个模型都在控制器上存储一些应用程序持久状态。我想在应用程序的其他地方访问此状态,但我不确定具体如何访问。
这里有一个JS Bin,它有一个精简版的应用程序,展示了我想要做的事情:在"Boxes"路线上,我想显示点击的小部件的数量,但从BoxController
我不知道如何访问具有该属性的WidgetController
。
如果我正确理解了指南,我应该能够使用needs
将一个控制器注入另一个控制器,但当我使用itemController
将每个模型封装在自己的控制器实例中时,这并不适用。
我会把它分成三部分。。。
1) 向包含已检查小部件的App.WidgetsController
添加计算属性。类似的东西
clickedWidgets: Ember.computed.filterBy('@this', 'hasBeenClicked', true)
2) 将needs: ['widgets']
添加到App.BoxController
3) 更改App.BoxController
的clickedWidgets
计算属性,以从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,输出