【发布时间】:2014-12-03 16:28:39
【问题描述】:
检查小提琴:
http://jsfiddle.net/9sqtvcou/1/
在输入中输入一些内容,然后等待 500 毫秒。如果您将“外部资源”更改为 1.2.27 版本(自我发布此消息之日起的最新 v1.2)它可以工作,否则它不会。
这是潜在的相关代码:
var debounceDuration = $parse($attrs.debounce)($scope);
var immediate = !!$parse($attrs.immediate)($scope);
var debouncedValue, pass;
var prevRender = ngModelController.$render.bind(ngModelController);
var commitSoon = debounce(function (viewValue) {
pass = true;
ngModelController.$setViewValue(viewValue);
pass = false;
}, parseInt(debounceDuration, 10), immediate);
ngModelController.$render = function () {
prevRender();
commitSoon.cancel();
//we must be first parser for this to work properly,
//so we have priority 999 so that we unshift into parsers last
debouncedValue = this.$viewValue;
};
ngModelController.$parsers.unshift(function (value) {
if (pass) {
debouncedValue = value;
return value;
} else {
commitSoon(ngModelController.$viewValue);
return debouncedValue;
}
});
我不熟悉 angular,所以我想知道:在 v1.3 中发生了什么破坏了 angular-debounce?
编辑: 包含技术细节的答案将优先于抽象的答案。
【问题讨论】:
标签: javascript angularjs angular-directive