使用Materialise時(從原始問題的評論中可以看出),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
「絕招」,因爲change
自定義事件也引起了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橋的創造者之一。
您只能在組件的「attached(){...}」事件(在DOM呈現後)使用jquery選擇器。 – JayDi
@JayDi對不起,你的意思是jquery選擇器?像$('#xx')。val()? – sibi
是的。像:$('#dateStart')。datetimepicker({locale:'ru',format:'DD.MM.YYYY'}); – JayDi