覆盖应用程序控制器值

时间:2013-12-01 17:48:18

标签: ember.js

我有一个应用程序,在许多页面上都有一张地图。 需要在某些页面上删除/隐藏此地图。

我在应用程序控制器级别定义了一些属性:

app.ApplicationController = Ember.ObjectController.extend({
  isAuthenticated: false,
  showMap: true
});

我为路线设置了另一个控制器,让我们说:

app.RegisterController = Ember.ObjectController.extend({
  showMap: false
});

在ui中,考虑了应用程序控制器属性。 我想覆盖应用程序控制器中属性的用法,并考虑当前路由的控制器设置值。

任何解决方案?

1 个答案:

答案 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}}。

JSBin example