gpt4 book ai didi

javascript - Aurelia 验证未绑定(bind)到文本框组件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:00:47 26 4
gpt4 key购买 nike

我制作了一个简单的文本框组件,它只包装了一些样式以及标签和文本框的组合。当我尝试使用典型的绑定(bind)语法将验证绑定(bind)到此控件时,模糊功能不会导致执行验证。

组件 View 如下所示:

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

View 模型看起来像:

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

组件是这样使用的:

<textbox value.bind="emailAddress & validate" type="email"></textbox>

数据绑定(bind)按预期工作,但验证绑定(bind)不工作。任何想法表示赞赏。

最佳答案

元素需要触发模糊事件。由于您的元素是自定义的,因此您需要添加代码以在它“模糊”时触发它。在您的情况下,这非常简单,自定义元素的模板中只有一个可聚焦元素。

这是一个例子: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>

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

我们会将其添加到文档中:https://github.com/aurelia/validation/issues/297

关于javascript - Aurelia 验证未绑定(bind)到文本框组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39187287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com