私は_lodash.debounce()を使おうとしていますが、動作しています。しかし、それが最善の方法で機能しているかどうかはわかりません。 lodashのWebサイトで例を確認しましたが、これらはパラメーターを渡さない単純な例のようです。これが私が持っているものです:
_$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);
_
上記のコードは、デバウンスされた関数_$scope.parsePid
_を返します。 4行目で、_$scope.option.SPidRange
_の値を取得し、それを関数で使用していることに注意してください。この方法で取得するのではなく、どういうわけかこのパラメーターを渡したいのです。
私はこのような関数を呼び出します:
_$scope.$watch("option.sPidRange", function (pid) {
if (pid !== null) {
$scope.parsePid();
}
});
_
ここで、値pidは_$scope.parsePid
_と等しくなければなりません
このpidの値をデバウンスされた関数に渡したいのですが、これを行う方法がわかりません。いくつかの方法を試しましたが、デバウンス関数でエラーが発生します。
デバウンスされたfunction $scope.parsePid()
にパラメーターを渡すことは可能ですか?
関数に引数を渡す必要があります:_.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);
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);
};