Ember的“不等于当前路线”的计算属性

时间:2019-03-11 20:51:08

标签: ember.js properties

很好奇什么等同于以下计算的属性。实际上,Ember的computed中没有内置notEqual方法。

isNotPizza: computed.notEqual('controllers.application.currentRouteName', 'pizza'),

2 个答案:

答案 0 :(得分:2)

有几种方法:

import { not, equal } from '@ember/object/computed';

// ...

isPizza: equal('controllers.application.currentRouteName', 'pizza'),
isNotPizza: not('isPizza'),

或者,您可以通过以下方式使自己不等于:

import { not, equal } from '@ember/object/computed';

isNotPizza: not(equal('controllers.application.currentRouteName', 'pizza')),

尽管可能需要使用它:https://github.com/kellyselden/ember-macro-helpers不记得此功能是否受本机支持。

如果您恰好在ember-canary上(使用本机类和装饰器),则可以执行以下操作:

@not
@equal('controllers.application.currentRouteName', 'pizza')
isNotPizza;

答案 1 :(得分:0)

使用自定义计算属性:

isNotPizza: computed('controllers.application.currentRouteName', function () {
  return 'pizza' !== this.get('controllers.application.currentRouteName');
}),