为什么可观察的装饰者不尊重去抖属性?

时间:2017-01-05 14:30:19

标签: javascript aurelia aurelia-binding

采取此约束和声明

<input type="text" value.bind="houseNumber" keyup.delegate=" validation.validateField($event) & debounce:400"/>

这个viewModel

export class Test{
    @observable houseNumber; 

    constructor(){
        this.houseNumber = "";
    }

    houseNumberChanged(newValue, oldValue){
        console.log('changed');
    }
}

通常debounce属性应该延迟更新绑定:http://aurelia.io/hub.html#/doc/article/aurelia/binding/latest/binding-binding-behaviors/3

但不知何故,当我使用@observable装饰器时,此debounce属性将被忽略。

更新

我使用updateTrigger

解决了这个问题
<input type="text" value.bind="houseNumber & updateTrigger:'blur'" />

我是否仍然好奇是否有延迟与@observable装饰器的绑定以便不直接调用houseNumberChanged函数?

2 个答案:

答案 0 :(得分:2)

我会查看这篇博文。

https://www.danyow.net/aurelia-binding-behaviors/

它看起来像你实际的语法:

<input type="text" value.bind="houseNumber & debounce:400" />

或者如果您想要基于按键事件

<input type="text" keyup.delegate="houseNumberChanged($event) & debounce:400">

答案 1 :(得分:2)

你没有将辩护放在需要它的绑定上(value.bind="houseNumber & debounce")。如果你想去抖动绑定并且只触发keyup,那么你需要这个:

<input type="text" value.bind="houseNumber & debounce:500 & updateTrigger:'keyup'" />

我在这里创建了一个快速示例要点:https://gist.run/?id=2621b818abcf64c512a6da6d8c1dd1a4