2015-12-09 112 views
0

我想解决如何做一个startsWith?这是一个自定义元素,它需要验证字符串以“\”Aurelia验证匹配

<template> 
    <input disabled.bind="readonly" type="text" class="form-control" value.bind="value"> 
</template> 

import {customElement, bindable, inject, bindingMode} from 'aurelia-framework'; 
import {activationStrategy} from 'aurelia-router'; 
import $ from 'jquery'; 
import {Validation} from 'aurelia-validation'; 



@customElement('url') 
@bindable({name: 'value', attribute: 'value', defaultValue: '', defaultBindingMode: bindingMode.twoWay}) 
@bindable({name: 'readonly', attribute: 'disabled', defaultValue: false, defaultBindingMode: bindingMode.oneWay}) 
@inject(Element, Validation) 
export class Url { 
    constructor(element, validation) { 
     this.element = element; 

     this.validation = validation.on(this) 
        .ensure(this.element) 
        .isNotEmpty() 
        .containsNoSpaces() 
        .matches('/^[\].*/'); 
    } 

    bind(){ 
     $('.input', this.element).val(this.value); 

     if(this.readonly){ 
      $('.input', this.element).attr('readonly', 'readonly'); 
     } 
    } 
} 

我已经看了http://aurelia.io/validation/#/logical-operators,我觉得我这样做是正确启动,但它抛出一个错误:内部误差:类型错误: path.split不是函数

+0

你不需要导入元素或jQuery。你是否正确插入了“aurelia-validation”?您应该阅读aurelia验证入门指南https://github.com/aurelia/validation/blob/master/doc/Intro.md#installation –

回答

3
  1. 功能ensure()接受验证的字段的名称,而不是元素
  2. 没有必要用引号括您的正则表达式

它应该像

this.validation = validation.on(this) 
         .ensure('value') 
         .isNotEmpty() 
         .containsNoSpaces() 
         .matches(/^\\.*$/); 
+0

谢谢米哈伊尔 –