与javascript和IronValidatorBehavior
的实现类似,如何在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/