Недавно я взял Bacon.js и сделал с ним некоторый пользовательский интерфейс, в котором я включаю только кнопку «Зарегистрироваться», если требования met, один из них проверяет правильность имени пользователя.Bacon.js объединяет свойства с .and() только в том случае, если prop === true
// Returns true or string with invalid reason
var isUsernameValid = username
.map(function(value) {
if(value.length < 4) {
return 'Must be 4 characters at least';
}
if(!config.patterns['username'].test(value)) {
return 'Can only have letters, numbers, periods, or underscores';
}
return true;
});
Оно либо возвращает true, либо почему имя пользователя недействительно.
Позже я объединить все результаты с этим:
password.and(username).and(isUsernameValid)
.not().assign($(view['signup-submit']), 'toggleClass', 'disabled');
Имя пользователя и пароль только справедливо, когда есть вход, но так как isUsernameValid
всегда возвращает значение truthy кнопки заканчивается время неправильно включен.
Есть ли лучший способ вернуть ошибки или объединить свойства, передав функцию?
Я думал об объявлении другого потока/свойства для возврата, если value === true
, но я стараюсь избегать этого.
Спасибо за предложение, но я в конечном итоге изменить свою функцию, чтобы возвращать либо Bacon.Next или Bacon.Error и преобразование собственности, основанной на что. – Mario