由于单击处理程序在父元素上,该元素首先被调用。但是我需要我的复选框才能在发送信号之前更改状态。
因此,我使用setTimeout(0)
setTimeout(0)
<div click.delegate="update()">
<div class="checkbox">
<label>
<input checked.bind="group.validated" type="checkbox"> Visibility
</label>
</div>
</div>
基本上,正在发生的事情是,update(){
setTimeout(()=>{
this.signaler.signal('refresh-groups');
}, 0);
return true;
}
是在
return true;
函数之前执行的。这样,检查了复选框Before
信号即将发送。 注意这不会在首先更新复选框状态的常规方法中发生,但这是this.signaler.signal
我不喜欢我在这里创造的感觉。 0秒的超时意味着该函数在呼叫列表的末尾,仅此而已。如果我的
onclick
声明会发生任何事情,导致它等待0.1秒,我遇到了同样的问题。
有其他更值得信赖的选择吗?简单地使用
Aurelia
似乎在这里没有解决问题。我认为主要问题是您正在使用
return true;
事件,该事件会触发输入元素的值更改。改用
Promise
事件。Https://gist.run/?id =863282464762B54C8CF67DE541BAC4D3
您可以运行
click
作为任务。例如:
change