आपका कोड काम नहीं कर रहा है क्योंकि यह निर्देश तत्वों touchstart
और touchend
किसी घटना के समय आप शायद का उपयोग नहीं कर रहे हैं आप परीक्षण कर रहे हैं करने के लिए बांधता एक ब्राउज़र में
जब मैंने उन्हें mousedown
और mouseup
में बदल दिया, तो आपकी स्क्रिप्ट ने मेरे कंप्यूटर के ब्राउज़र पर ठीक काम किया।
// pressableElement: pressable-element
.directive('pressableElement', function ($timeout) {
return {
restrict: 'A',
link: function ($scope, $elm, $attrs) {
$elm.bind('mousedown', function (evt) {
$scope.longPress = true;
$scope.click = true;
// onLongPress: on-long-press
$timeout(function() {
$scope.click = false;
if ($scope.longPress && $attrs.onLongPress) {
$scope.$apply(function() {
$scope.$eval($attrs.onLongPress, { $event: evt });
});
}
}, $attrs.timeOut || 600); // timeOut: time-out
// onTouch: on-touch
if ($attrs.onTouch) {
$scope.$apply(function() {
$scope.$eval($attrs.onTouch, { $event: evt });
});
}
});
$elm.bind('mouseup', function (evt) {
$scope.longPress = false;
// onTouchEnd: on-touch-end
if ($attrs.onTouchEnd) {
$scope.$apply(function() {
$scope.$eval($attrs.onTouchEnd, { $event: evt });
});
}
// onClick: on-click
if ($scope.click && $attrs.onClick) {
$scope.$apply(function() {
$scope.$eval($attrs.onClick, { $event: evt });
});
}
});
}
};
})
प्रयोग उदाहरण:
app.directive('onLongPress', function($timeout) {
return {
restrict: 'A',
link: function($scope, $elm, $attrs) {
$elm.bind('mousedown', function(evt) { // <-- changed
/* ... */
});
$elm.bind('mouseup', function(evt) { // <-- changed
/* ... */
});
}
};
})
स्रोत
2015-01-14 17:26:46
आप एक मोबाइल फोन के साथ परीक्षण कर रहे हैं: आयनों परिभाषाओं कि आप पसंद करेंगे बनाने के लिए? शायद "लम्बी क्लिक" एक ही घटना नहीं है जैसे "लंबी प्रेस" ... ;-) https://github.com/pisi/Longclick –