2017-01-18 15 views
2

anglejs $ interval関数を使用して、上矢印または下矢印をクリックすると値を連続的に増減します。しかし、増減しようとすると "TypeError:$ interval is not function"というエラーが表示されます。どのようにこの問題を解決するには、事前に感謝します。これは私がこれまでに書いたコードです:お使いのコントローラに$間隔のサービスを注入

$scope.onMouseDown = function (type) { 
 
    promise = $interval(function() { 
 
    if (type == 'Inc') { 
 
     $scope.increaseVal(); 
 
    } 
 
    else if (type == 'Dec') { 
 
     $scope.decreaseVal(); 
 
    } 
 
    }, 150); 
 
}; 
 
$scope.stopInterval = function() { 
 
    $interval.cancel(promise); 
 
};
<div><a href="javascript:;" class="arrow" data-spin="up"><i class="fa fa-caret-up" ng-mousedown="onMouseDown('Inc')" ng-mouseup="stopInterval()" ng-mouseleave="stopInterval()" ng-click="increaseVal()"></i></a> 
 
<a href="javascript:;" class="arrow" data-spin="down"><i class="fa fa-caret-down" ng-mousedown="onMouseDown('Dec')" 
 
ng-mouseup="stopInterval()" ng-mouseleave="stopInterval()" ng-click="decreaseVal()"></i></a> 
 
</div>

+0

あなたは、コントローラの依存関係で$間隔が含まれていますか? – dev8080

+1

あなたの質問に答えるドキュメントもあります。 – dfsq

+0

https://docs.angularjs.org/api/ng/service/$intervalをご覧ください。 – Deep

答えて

1

angular.module('yourmodulename').controller('yourcontrollername', [ 
    '$scope', '$interval', 
    function ($scope, $interval) { 
     $scope.onMouseDown = function (type) { 
      promise = $interval(function() { 
       if (type == 'Inc') { 
        $scope.increaseVal(); 
       } 
       else if (type == 'Dec') { 
        $scope.decreaseVal(); 
       } 
      }, 150); 
     }; 
     $scope.stopInterval = function() { 
      $interval.cancel(promise); 
     }; 
}]); 
+0

これが当てはまる場合、 'undefinedのプロパティcancelを読むことができません 'と言うことはありませんか? – devqon

+0

エラーは何行表示されていますか?私はそれがpromise変数を設定しようとしている場所を推測しています。その場合は$ intervalを関数として使用しています。あなたは、$ intervalサービスでキャンセルを呼び出そうとしているコードに到達していません。 – nweg

+0

ありがとう、実際に私はこの関数を複数の方法から呼び出しています。私は1つの呼び出し関数から$ intervalの注入を逃しました。今それは正常に動作しています。皆さんを悩ますことに対する謝罪。 – User

関連する問題