У меня есть директива, содержащая вход с двумя стрелками, которая увеличивает/уменьшает числа.Угловое: увеличение счетчика при длительном нажатии
Я хотел бы увеличить/уменьшить количество непрерывно, когда пользователь использует длинный клик, как я могу это сделать?
директива:
'use strict';
(function (module) {
var vlIncrementor = function() {
return {
templateUrl: 'assets/angular-client/app/html/common/incrementor/vlIncrementor.html',
scope: { model: '=ngModel' },
controller: function ($scope) {
$scope.increment = function () {
$scope.model++;
};
$scope.decrement = function() {
$scope.model--;
};
}
};
};
module.directive('vlIncrementor', vlIncrementor);
}(angular.module('html.common')));
HTML:
<div class="vl-increment">
<i class="fa fa-caret-left fa-lg center" ng-class="{disabled: model === 0}" ng-click="decrement()"></i>
<input type="text" ng-model="model"/>
<i class="fa fa-caret-right fa-lg center" ng-click="increment()"></i>
</div>
Я попытался добавить функции связи с этим кодом, но он не работает (она увеличивается одним обычным кликом):
link: function (scope , el) {
$(el).find('.fa-caret-left').mouseup(function(){
clearTimeout(pressTimer)
// Clear timeout
return false;
}).mousedown(function(){
// Set timeout
pressTimer = window.setTimeout(function() {
scope.$apply(function() {
scope.model--;
});
},1000);
return false;
});
}
сохранить состояние кнопки в булевом режиме и запустить таймаут до тех пор, пока кнопка не будет поднята; – Hacketo
@Hacketo - разве это не то, что я делаю в функции ссылок? – Tomer
setTimeout уволен только один раз, а не 'до тех пор, пока мышь не закончится' – Hacketo