Свойство Ember, вычисленное для «не равно текущему маршруту»

#ember.js #properties

#ember.js #свойства

Вопрос:

Любопытно, что эквивалентно следующему вычисляемому свойству. На самом деле, в вычисляемый Ember метод NotEqual не встроен.

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

Ответ №1:

Есть пара способов:

 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;
  

Ответ №2:

Используйте пользовательское вычисляемое свойство:

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

Комментарии:

1. если у вас ember > = 31, вы можете сделать this.controllers.application.currentRouteName