Aurelia Validation Matches

Я пытаюсь понять, как бы я начал с? Это пользовательский элемент, он должен проверить, что строка начинается с "\"

<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/, и я думаю, что я делаю это правильно, но выдает ошибку: внутренняя ошибка: TypeError: path.split не является функцией

1 ответ

Решение
  1. Функция ensure() принимает имя проверенного поля, а не элемента
  2. Не нужно окружать свое регулярное выражение кавычками

Это должно быть что-то вроде

this.validation = validation.on(this)
                         .ensure('value')   
                         .isNotEmpty()
                         .containsNoSpaces()
                         .matches(/^\\.*$/);
Другие вопросы по тегам