我正在尝试将attach-focus="true"
传递给自定义元素的一个内部元素,以便在aurelia对话框打开时正确的元素将获得焦点。
自定义元素:enum-list.html
<template>
<label class="control-label">${label} DEBUG: ${attach-focus}</label>
<select class="form-control" value.bind="value" attach-focus.bind="attach-focus">
<option if.bind="data" repeat.for="code of data | keys" value="${code}">${data[code]}</option>
</select>
</template>
自定义元素:enum-list.js
import { bindable, bindingMode } from 'aurelia-framework';
export class EnumListCustomElement {
@bindable label;
@bindable data;
@bindable attach-focus; // <-- Maybe the source of the error?
@bindable({ defaultBindingMode: bindingMode.twoWay }) value;
}
对话框模板:edit-locale.html:
<template>
<ai-dialog>
<ai-dialog-header class="modal-header modal-header-success">
<h4 class="modal-title">Edit Locale</h4>
</ai-dialog-header>
<ai-dialog-body>
<form>
<enum-list attach-focus="true" label="Language" data.bind="core.enums.SystemLanguage" value.bind="sch_lang"></enum-list>
<enum-list label="Currency" data.bind="core.enums.CurrencyCode" value.bind="sch_currency"></enum-list>
</form>
</ai-dialog-body>
<ai-dialog-footer>
<button type="button" click.trigger="dialogController.cancel()">Cancel</button>
<button type="button" click.delegate="dialogController.ok()">Save</button>
</ai-dialog-footer>
</ai-dialog>
</template>
实例化(来自我的VM js):
this.dialogService.open({ viewModel: EditLocale, model: this.record, lock: true }).then(response => {
如果我从edit-locale.js
和自定义元素内部的attach-focus中删除破折号,则模态对话框会正常加载。但是使用破折号,我收到一个错误:Uncaught SyntaxError: Unexpected token import
。我认为破折号是干扰但我不知道如何解决它。
我的首选是修复它,以便自定义控件的实例化具有标准参数attach-focus="true"
(使用破折号),以便它与普通元素(如INPUT和SELECT)一致。
答案 0 :(得分:1)
您对错误的来源是正确的,您不能拥有包含短划线的property-name
。因为它显示为property - name
。
aurelia中有一个约定(link to docs,搜索dash-case)将属性和元素名称从破折号表示法映射到camelCase表示法,因此如果在您的模型中,您将可绑定属性命名为{{1 - 你将能够在你的视图中使用它作为attach-focus.bind =“true”。
另外,请确保在视图中@bindable attachFocus
自定义元素/属性,或在配置aurelia时使其全局可用。