Aurelia Js select 盒子不工作
Aurelia Js select box not working
我是 Aurelia Js 的新手,在这里,我使用的是一个简单的 select 框,但它在更改值时不起作用。
HTML :
<select value.bind="selectVal" change.delegate="changed()">
<option value="" disabled selected>Doc.Type</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
型号:
this.selectVal = '';
changed(){
alert();
}
change.delegate 在更改值时不会触发。此外,日期选择器值未加载到模型中。会是什么问题?是我的问题还是 Aurelia js 的问题。
使用 Materialize 时(从原始问题的评论中可以看出),select 元素不会触发任何 change
事件。您必须监听 jQuery change
事件并在事件处理程序中触发 CustomEvent
。
像这样:
_suspendUpdate = false;
attached() {
$(this.option).material_select()
$(this.option).on('change', e => {
if (!this._suspendUpdate) {
let customEvent = new CustomEvent('change', {});
this._suspendUpdate = true;
this.option.dispatchEvent(customEvent);
this._suspendUpdate = false;
}
});
}
注意:suspendUpdate
"trick" 是必需的,因为 change
CustomEvent 也会导致 jQuery 触发它自己的 change
事件,这会导致无限循环.
以上代码段的视图模板:
<template>
<require from="materialize/dist/css/materialize.css"></require>
<div class="input-field col s12">
<select ref="option" value.bind="optionSelect">
<option value="" disabled selected>Choose your option</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<p>Selected value: ${optionSelect}</p>
</div>
</template>
这里还有一个 gist.run 演示了这种方法:
https://gist.run/?id=4e7dd11228407e765844570409d210bd
当然,如果您将 Materialise 与 Aurelia 结合使用,您也可以使用 Materialise 桥:http://aurelia-ui-toolkits.github.io/demo-materialize/#/about
免责声明:我是 Aurelia Materialise 桥的创建者之一。
我是 Aurelia Js 的新手,在这里,我使用的是一个简单的 select 框,但它在更改值时不起作用。
HTML :
<select value.bind="selectVal" change.delegate="changed()">
<option value="" disabled selected>Doc.Type</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
型号:
this.selectVal = '';
changed(){
alert();
}
change.delegate 在更改值时不会触发。此外,日期选择器值未加载到模型中。会是什么问题?是我的问题还是 Aurelia js 的问题。
使用 Materialize 时(从原始问题的评论中可以看出),select 元素不会触发任何 change
事件。您必须监听 jQuery change
事件并在事件处理程序中触发 CustomEvent
。
像这样:
_suspendUpdate = false;
attached() {
$(this.option).material_select()
$(this.option).on('change', e => {
if (!this._suspendUpdate) {
let customEvent = new CustomEvent('change', {});
this._suspendUpdate = true;
this.option.dispatchEvent(customEvent);
this._suspendUpdate = false;
}
});
}
注意:suspendUpdate
"trick" 是必需的,因为 change
CustomEvent 也会导致 jQuery 触发它自己的 change
事件,这会导致无限循环.
以上代码段的视图模板:
<template>
<require from="materialize/dist/css/materialize.css"></require>
<div class="input-field col s12">
<select ref="option" value.bind="optionSelect">
<option value="" disabled selected>Choose your option</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<p>Selected value: ${optionSelect}</p>
</div>
</template>
这里还有一个 gist.run 演示了这种方法: https://gist.run/?id=4e7dd11228407e765844570409d210bd
当然,如果您将 Materialise 与 Aurelia 结合使用,您也可以使用 Materialise 桥:http://aurelia-ui-toolkits.github.io/demo-materialize/#/about
免责声明:我是 Aurelia Materialise 桥的创建者之一。