You can listen for the on-hold event, and then listen for the on-release event. You can compare the time of both events to determine how long the hold happened. Something like this might do it.
Button
<button class="button" on-hold="hold($event)" on-release="release($event)">My Button</button>
Controller
var didUserHoldForThreeSeconds = 0;
$scope.hold = function(event) {
didUserHoldForThreeSeconds = event.timestamp;
};
$scope.release = function (event) {
if (event.timestamp - didUserHoldForThreeSeconds > 3000) {
console.log('Hooray! They held for 3 seconds')
}
didUserHoldForThreeSeconds = 0; // reset after each release
};