17 javascript angularjs lodash
我一直在尝试使用_lodash.debounce(),我让它工作.但是我不确定它是否以最好的方式工作.我查看了lodash网站上的示例,它们似乎只是简单的示例,不传递参数.这就是我所拥有的:
$scope.parsePid = _.debounce(function () {
$scope.$apply(function () {
var pid = $scope.option.sPidRange;
if (pid == null || pid === "") {
$scope.pidLower = null;
$scope.pidUpper = null;
}
else if (pid.indexOf("-") > 0) {
pid = pid.split("-");
$scope.pidLower = parseInt(pid[0]);
$scope.pidUpper = parseInt(pid[1]);
}
else {
$scope.pidLower = parseInt(pid);
$scope.pidUpper = null;
}
});
}, 1500);
Run Code Online (Sandbox Code Playgroud)
上面的代码返回一个$scope.parsePid
被去抖动的函数.请注意,在第4行,我得到了值$scope.option.SPidRange
并在函数中使用它.我真的想以某种方式传递这个参数而不是这样.
我把这个函数称为:
$scope.$watch("option.sPidRange", function (pid) {
if (pid !== null) {
$scope.parsePid();
}
});
Run Code Online (Sandbox Code Playgroud)
这里的值pid应该等于 $scope.parsePid
我想将这个pid的值传递给debounced函数,但我不知道该如何做到这一点.我尝试了一些不同的东西,但去抖功能会出错.
是否可以将参数传递到去抖动function $scope.parsePid()
?
Ila*_*mer 11
你应该将一个参数传递给函数: _.debounce(function (pid) {
$scope.parsePid = _.debounce(function(pid){
$scope.$apply(function(){
if (pid === null || pid === "") {
$scope.pidLower = null;
$scope.pidUpper = null;
} else if (pid.indexOf("-") > 0) {
pid = pid.split("-");
$scope.pidLower = parseInt(pid[0],10);
$scope.pidUpper = parseInt(pid[1],10);
} else {
$scope.pidLower = parseInt(pid,10);
$scope.pidUpper = null;
}
});
},1500);
Run Code Online (Sandbox Code Playgroud)
var promise;
$scope.parsePid = function(pid){
$timeout.cancel(promise);
promise = $timeout(function(){
if (pid === null || pid === "") {
$scope.pidLower = null;
$scope.pidUpper = null;
} else if (pid.indexOf("-") > 0) {
pid = pid.split("-");
$scope.pidLower = parseInt(pid[0],10);
$scope.pidUpper = parseInt(pid[1],10);
} else {
$scope.pidLower = parseInt(pid,10);
$scope.pidUpper = null;
}
},1500);
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12323 次 |
最近记录: |