我有一个自定义元素层次结构,看起来select-single <- dropdown <- dropdown-wrapper
每个名称都是一个自定义元素,每个箭头代表一个使用该自定义元素的模板。
当我使用select-single
时,attached
处理程序调用selectedChanged()
设置options
为绑定值,但doSelect
未定义。显示页面后,单击select-single
控件中的元素会触发click.trigger
并且两个绑定属性都是有效值。
是否有关于 Aurelia 生命周期的规则阻止doSelect
函数被绑定,即使options
在同一个生命周期步骤绑定?
选择-single.html
<template>
<div class="select-single"
if.bind="options.length">
<label
class="select-single-option"
repeat.for="option of options"
click.trigger="selectedChanged(option)">
${option.name}
</label>
</div>
</template>
选择-single.js
import {
bindable
} from 'aurelia-framework';
@bindable({
name: 'options',
defaultValue: []
})
@bindable({
name: 'doSelect',
defaultValue: null
})
export class SelectSingle {
constructor() {
let self = this;
this.selectedChanged = function(option) {
self.doSelect(option);
}
}
attached() {
for(let ii = 0; ii < this.options.length; ii++){
if(!!this.options[ii].defaultSelection){
this.selectedChanged(this.options[ii]);
}
}
}
}
索引.html
<select-single options.bind="options" do-select.bind="doSelect"></select-single>