2015-06-17 6 views
1

У меня есть директива, содержащая вход с двумя стрелками, которая увеличивает/уменьшает числа.Угловое: увеличение счетчика при длительном нажатии

Я хотел бы увеличить/уменьшить количество непрерывно, когда пользователь использует длинный клик, как я могу это сделать?

enter image description here

директива:

'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; 
       }); 
      } 
+0

сохранить состояние кнопки в булевом режиме и запустить таймаут до тех пор, пока кнопка не будет поднята; – Hacketo

+0

@Hacketo - разве это не то, что я делаю в функции ссылок? – Tomer

+0

setTimeout уволен только один раз, а не 'до тех пор, пока мышь не закончится' – Hacketo

ответ

0

Схожий вопрос был дан here.

Возможное решение - использовать ng-mousedown и ng-mouseup и использовать $interval для контроля счетчика.

Смежные вопросы