2015-06-17 66 views
1

我有一個指令,其中包含帶有兩個增加/減少數字箭頭的輸入。Angular:長按增加計數器

我想在用戶長時間點擊時連續增加/減少數字,我該怎麼做?

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-mousedownng-mouseup並使用$interval來控制計數器。