我有一个应用程序,在许多页面上都有一张地图。 需要在某些页面上删除/隐藏此地图。
我在应用程序控制器级别定义了一些属性:
app.ApplicationController = Ember.ObjectController.extend({
isAuthenticated: false,
showMap: true
});
我为路线设置了另一个控制器,让我们说:
app.RegisterController = Ember.ObjectController.extend({
showMap: false
});
在ui中,考虑了应用程序控制器属性。 我想覆盖应用程序控制器中属性的用法,并考虑当前路由的控制器设置值。
任何解决方案?
答案 0 :(得分:1)
Ember提供了一套相当全面的computed property helpers,可用于组合属性。结合允许访问其他控制器的controller needs系统,这些系统可用于创建计算属性,该属性考虑了applicationController
和本地控制器的属性:
App.ApplicationController = Ember.Controller.extend({
showMap: true
});
App.ChildController = Ember.Controller.extend({
needs: ['application'],
showMap: false,
combinedShowMap: Ember.computed.and('controllers.application.showMap', 'showMap')
});
此示例创建一个计算属性combinedShowMap
,它是AND
的{{1}}和applicationController
的{{1}} showMap
操作。 1}}。