dart - 如何在Polymer Dart中进行自定义验证

标签 dart polymer-1.0 dart-polymer

javascriptIronValidatorBehavior的实现类似,如何在Polymer Dart中进行自定义验证?

我可以创建一个实现IronValidatorBehavior的新的自定义验证器,例如

  <dom-module id="form-input">
    <template>
      <style include='shared-styles iron-flex iron-flex-alignment'>
        :host {
          display: block;
          padding: 1em;
        }
      </style>
      <custom-validator id="validator" validator-name="jsonValidator" validator-type="json"></custom-validator>
      <paper-textarea label="[[label]]" id="body" name="body" autofocus tabindex="0"
                      validator="jsonValidator" auto-validate error-message="This is not a valid format"></paper-textarea>
    </template>
  </dom-module>

自定义验证器写为
library main_app.custom_validator;

import 'dart:html';
import 'package:polymer/polymer.dart';
import 'package:polymer_elements/iron_validator_behavior.dart' show IronValidatorBehavior;

@PolymerRegister('custom-validator')
class  CustomValidator extends PolymerElement with IronValidatorBehavior{

  CustomValidator.created() : super.created();

  @reflectable
  bool validate(e, [_]){
    switch(validatorType) {
      case 'json':
        return textValidator(e);
    }
    return false;
  }

  bool textValidator(e){
    return false;
  }
}

最佳答案

好吧,这是一个错字,如果我改变的话,上面的作品也可以。

<custom-validator id="validator" validator-name="jsonValidator" validator-type="json"></custom-validator>


<custom-validator id="validator" validator-name="jsonValidator" validator-check="json"></custom-validator>

需要将属性validatorType设置为其默认值“validator”。而是添加了一个新的属性validateatorCheck,在其中设置了要调用的验证方法名称。
library custom_validator;

import 'dart:mirrors' show reflect;    
import 'package:polymer/polymer.dart';
import 'package:polymer_elements/iron_validator_behavior.dart' show IronValidatorBehavior;
import 'package:validator/validator.dart' show isJSON;

@PolymerRegister('custom-validator')
class  CustomValidator extends PolymerElement with IronValidatorBehavior{
  @property
  String validatorCheck;

  CustomValidator.created() : super.created();

  @reflectable
  bool validate(value, [_]){

    if(validatorCheck.isNotEmpty) {
      Symbol sym  = new Symbol(validatorCheck);
      return reflect(this).invoke(sym, [value]).reflectee;
    }
    return false;
  }

  bool json(String value, [_]){

    if(value.isNotEmpty) {
      return isJSON(value);
    }
    return true;
  }
}

关于dart - 如何在Polymer Dart中进行自定义验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41373845/

相关文章:

flutter - 如何在 Flutter 桌面应用程序(macOS)中添加半透明效果?

dart - 具有多项选择的纸质菜单,如何取消全选

android - flutter : Errors when adding TextFields

javascript - 聚合物 : paper-autocomplete set value

javascript - 通知 Polymer dom-repeat 对本地 DOM 的更改

dart - 获取Dart Polymer元素资源URL

dart - 如何在 Polymer.dart 中使用 Material 设计的内置 css 颜色类?

android - Flutter 上的小部件的 onResume() 和 onPause()

css - 如何在不修改第三方元素的情况下替换::shadow

dart - 以编程方式创建数据列表