【问题标题】:form validation with baconjs使用 baconjs 进行表单验证
【发布时间】:2015-07-31 21:43:17
【问题描述】:

我最近开始使用 bacon.js,不知何故,我真的很喜欢以函数式反应式编程风格将 EventStream 组合在一起的想法。

我目前正在实施表单验证。 当前代码:

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

有什么建议吗?

【问题讨论】:

    标签: jquery functional-programming frp bacon.js


    【解决方案1】:

    你基本上有正确的方法。将通用部分重构为辅助函数将有助于样板。

    要判断整个表单是否有效,可以使用数组方法:

    // 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 }) 
      })
    

    【讨论】:

      猜你喜欢
      • 2018-05-11
      • 2015-06-25
      • 2017-02-04
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多