2015-05-19 2 views
1

Недавно я начал играть с bacon.js, так или иначе мне очень нравится идея создания EventStream вместе в функциональном стиле реактивного программирования.проверка формы с помощью baconjs

В настоящее время я осуществляю проверку формы. Текущий код:

var name = textInputAsEventStream("#name"); //transforms input to evenStream 
var nameValid = name.map(specificValidationFunction); //here I validate a name that enters a stream 
nameValid.onValue(function(valid){//do something with jquery at the web interface, i.e. feedback of the validation} 

Проблема, переменные взрываются, когда у вас есть как 20 форм для проверки. (экстремальный пример) Есть ли у кого-нибудь идеи о том, как это решить элегантным способом?

Я не уверен, если ниже код действительно путь:

var valid = nameValid.and(surnameValid).and(adressValid).and(codeValid).and(cityValid).and(telValid).and(emailValid); 
//here I compose al 'validition'-streams into one 

Любые предложения?

ответ

0

Вы в основном имеете правильный подход. Рефакторинг общих частей в вспомогательные функции поможет с шаблоном.

Чтобы разобраться, если вся форма действительна, вы можете использовать методы массива:

// Add all your validation streams to an array 
var validityStreams = [ nameValid, surnameValid, adressValid ] 
var formValid = Bacon.combineAsArray(validityStreams) 
    .map(function(validityArray) { 
    return validityArray.every(function(val) { return val }) 
    })