我想要一個按鈕,如果按下的時間長於3秒,則會調用另一個函數。下面的代碼工作正常的鼠標事件,但隨着觸摸事件無法在移動設備上:將兩個函數綁定到一個按鈕,具體取決於按鈕按下的時間長度
angular.module('myApp', []).controller('myCtrl', function($scope, $timeout) {
var mapService = {
setHome: function() {
console.log("setHome called");
},
goHome: function() {
console.log("goHome called");
}
};
var _homeDownTimeout = null;
var _homeWasSet = false;
$scope.homeDown = function() {
_homeDownTimeout = $timeout(function() {
mapService.setHome();
_homeWasSet = true;
}, 3000);
};
$scope.homeUp = function() {
if (_homeDownTimeout) {
$timeout.cancel(_homeDownTimeout);
}
if (!_homeWasSet) {
mapService.goHome();
} else {
_homeWasSet = false;
}
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<button class="button icon ion-home button-map" ng-mousedown="homeDown()" ng-mouseup="homeUp()">HOME</button>
</div>
感謝您的輸入。我仍然有與模擬器相同的行爲 - > mouseup被中斷,也許Ionic在這裏有交互。但是,在我的iPhone上,mouseup事件被觸發,但觸發時會觸發mousedown,而不是touchstart,並在mouseup事件之前執行。 – Chris