Hai*_*der 2 angularjs angularjs-model
我正在查看用于处理表单的Angular 文档,并找到了一个非常有用的示例,用于在任何字段/控件中捕获更新并延迟.以下是Angularjs提供的示例代码:
<input type="text" ng-model="user.name" ng-model-options="{ debounce: 250 }" /><br />
Run Code Online (Sandbox Code Playgroud)
它工作正常.但他们提到debounce可以与多个事件一起使用,并提供另一个例子,如:
<input type="text" ng-model="user.name" ng-model-options="{ updateOn: 'default blur', debounce: { default: 500, blur: 0 } }" /><br />
Run Code Online (Sandbox Code Playgroud)
此示例的问题在于,无论您是否离开字段/控件,它总是会延迟更新.而在这种情况下,应立即更新模型,当用户离开现场/控制,debounce为0的情况下blur.
谁能解释这种行为.
我相信你成了Javascript类型转换的牺牲品,特别0是那样false.查看Angular 1.3.0-beta7,18305行的未经授权的来源:
var debounceDelay = ctrl.$options && (isObject(ctrl.$options.debounce)
? (ctrl.$options.debounce[trigger] || ctrl.$options.debounce['default'] || 0)
: ctrl.$options.debounce) || 0;
Run Code Online (Sandbox Code Playgroud)
如果您指定options.debounce它将尝试将第debounceDelay一个设置为options.debounce.blur,如您所料.但由于这是0(false),它继续使用... || ...to ctrl.$options.debounce['default'],这是非零(true)并设置此值!
作为一种变通方法,您既可以指定触发默认值的事件的确切名称(是keyup吗?),也可以为延迟指定一个小但非零的值,例如1:
debounce: { default: 500, blur: 1 }
Run Code Online (Sandbox Code Playgroud)
我认为这应该作为错误提交给Angular.
| 归档时间: |
|
| 查看次数: |
2062 次 |
| 最近记录: |