I have been trying to use _lodash.debounce() and i have it working. However i am not sure if it's working the best way it could be. I looked at the example on the lodash web site and they seem to be just simple examples that don't pass around parameters. Here's what i have:
$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);
The above code returns a function $scope.parsePid
that's debounced. Notice that on the 4th
line i get the value of $scope.option.SPidRange
and use that in the function. I really want to somehow pass in this parameter rather than get it this way.
I call the function like this:
$scope.$watch("option.sPidRange", function (pid) {
if (pid !== null) {
$scope.parsePid();
}
});
Here the value pid should be equal to $scope.parsePid
I would like to pass this value of pid into the debounced function but i am not sure how to do this. I tried a few different things but the debounce function gives an error.
Is it possible to pass parameters into the debounced function $scope.parsePid()
?
I have been trying to use _lodash.debounce() and i have it working. However i am not sure if it's working the best way it could be. I looked at the example on the lodash web site and they seem to be just simple examples that don't pass around parameters. Here's what i have:
$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);
The above code returns a function $scope.parsePid
that's debounced. Notice that on the 4th
line i get the value of $scope.option.SPidRange
and use that in the function. I really want to somehow pass in this parameter rather than get it this way.
I call the function like this:
$scope.$watch("option.sPidRange", function (pid) {
if (pid !== null) {
$scope.parsePid();
}
});
Here the value pid should be equal to $scope.parsePid
I would like to pass this value of pid into the debounced function but i am not sure how to do this. I tried a few different things but the debounce function gives an error.
Is it possible to pass parameters into the debounced function $scope.parsePid()
?
- What are the $ signs? – mikemaccana Commented May 15, 2017 at 16:39
1 Answer
Reset to default 13UPDATE
You should pass an argument into the function: _.debounce(function (pid) {
An example with debounce
$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);
I would use the built-in $timeout
An example with $timeout
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);
};