Как определить, являются ли два свойства ложными внутри одного вычисляемого свойства ember?

У меня есть контроллер со следующими свойствами и вычисляемыми свойствами.

import Ember from 'ember';

export default Ember.Controller.extend({
  emailAddress: '',
  messageBody: '',

  validEmail: Ember.computed.match('emailAddress', /^.+@.+\..+$/),
  validMessage: Ember.computed.gte('messageBody.length', 5),

  enableSend: Ember.computed.and('validEmail', 'validMessage'),
  disableSend: Ember.computed.not('enableSend')
});

Этот контроллер привязан к простой форме, которая имеет поле ввода электронной почты и текстовое поле. Я хочу проверить, действительны ли и ввод электронной почты, и текстовое поле, прежде чем я активирую кнопку отправки.

Приведенный выше код работает нормально, однако кажется, что должен быть способ объединить логику в enableSend и disableSend

Очевидно, вы не можете связать методы с вычисляемыми свойствами, но что-то вроде этого имеет смысл:

Ember.computed.and.not('validEmail', 'validMessage')

Это может быть глупый вопрос, но как мне определить, ложны ли два значения, не записывая два вычисленных свойства?


person reknirt    schedule 16.03.2016    source источник


Ответы (2)


Напишите вычисленное свойство от руки:

disableSend: Ember.computed('validEmail', 'validMessage', function() {
  return this.get('validEmail') && this.get('validMessage');
})
person locks    schedule 17.03.2016

Вот переработанная версия JS-кода:

emailAddress: '',
messageBody: '',

validEmail: Ember.computed.match('emailAddress', /^.+@.+\..+$/),
validMessage: Ember.computed.gte('messageBody.length', 5),

//Return the opposite to make "disabled" false
isDisabled: Ember.computed('messageIsValid','emailIsValid', function(){
  return !(this.get('messageIsValid') && this.get('emailIsValid'));
})

В файле hbs нужно что-то вроде этого:

  <button disabled={{isDisabled}}>Send message</button>
person thisFunction    schedule 21.03.2017