2016-12-29 7 views
1

Как и в случае с javascript и с внедрением IronValidatorBehavior, как сделать обычную проверку в Polymer Dart?Как сделать обычную проверку в 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; 
    } 
} 

ответ

0

нормально, это была опечатка, вышеуказанные работы, если я изменю.

<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 должен быть установлен в значение 'валидатор' по умолчанию. Вместо этого добавлен новый valid validCheckCheck, где я устанавливаю имя метода проверки, которое вызывается.

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; 
    } 
}