swa*_*nee 3 javascript aurelia aurelia-validation aurelia-binding
我创建了一个简单的文本框组件,它只包含一些样式以及标签和文本框的组合.当我尝试使用典型的绑定语法将验证绑定到此控件时,模糊功能不会导致验证执行.
组件视图如下所示:
<template>
<div class="form-field">
<div class="form-field__label">
${label}
<input name.bind="name" id.bind="name" class="form-field__input" type.bind="type" value.bind="value" tabindex.bind="tabIndex"></input>
</div>
</div>
</template>
Run Code Online (Sandbox Code Playgroud)
并且viewmodel看起来像:
import {bindable, bindingMode} from 'aurelia-framework';
export class Textbox {
@bindable({defaultBindingMode: bindingMode.twoWay}) value : string;
@bindable label : string;
@bindable type : string = "textbox";
@bindable tabIndex: number;
@bindable hidden : boolean;
@bindable name : string = '';
}
Run Code Online (Sandbox Code Playgroud)
组件使用如下:
<textbox value.bind="emailAddress & validate" type="email"></textbox>
Run Code Online (Sandbox Code Playgroud)
数据绑定按预期工作,但验证绑定不起作用.任何想法都表示赞赏.
元素需要触发模糊事件.由于您的元素是自定义的,因此当它"模糊"时,您需要添加代码来触发它.在您的情况下,这非常简单,您的自定义元素的模板中只有一个可聚焦元素.
这是一个例子:https://gist.run?id = 06bda9ac6e068ad21dab7b470f69c566
textbox.html
<template>
<div class="form-field">
<div class="form-field__label">
${label}
<input name.bind="name"
id.bind="name"
class="form-field__input"
type.bind="type"
value.bind="value"
tabindex.bind="tabIndex"
blur.trigger="blur()">
</div>
</div>
</template>
Run Code Online (Sandbox Code Playgroud)
textbox.js
import {bindable, bindingMode, DOM, inject} from 'aurelia-framework';
@inject(Element)
export class Textbox {
@bindable({defaultBindingMode: bindingMode.twoWay}) value: string;
@bindable label: string;
@bindable type: string = "textbox";
@bindable tabIndex: number;
@bindable hidden: boolean;
@bindable name: string = '';
element: Element;
constructor(element) {
this.element = element;
}
blur() {
this.element.dispatchEvent(DOM.createCustomEvent('blur'));
}
}
Run Code Online (Sandbox Code Playgroud)
我们将把这个添加到文档中:https://github.com/aurelia/validation/issues/297
| 归档时间: |
|
| 查看次数: |
822 次 |
| 最近记录: |