タッチ イベントが発生しない、ng-submit
またはng-click
(chrome デバイス開発ツールで) という奇妙な問題があります。Chrome 開発ツールは touchstart/touchend イベントをシミュレートするため、これが機能しない理由がわかりません。デスクトップで問題なく動作します。
次の HTML フォームがあるとします。
<form subscribe-to-newsletter ng-submit="subscribe.submitEmailSubscribe()" ng-class="{ error : subscribe.states.error, success : subscribe.states.success }">
<div class="status-icon loading" ng-show="subscribe.states.loading"><i class="fa fa-circle-o-notch fa-spin"></i></div>
<div class="status-icon success" ng-show="subscribe.states.success"><i class="fa fa-check"></i> Subscribed!</div>
<input type="email" placeholder="Email Address" ng-model="subscribe.email">
<button type="submit" class="hollow">Subscribe to newsletter</button>
</form>
そして、次のディレクティブ/コントローラー:
angular.module('quiip.directives')
.directive('subscribeToNewsletter', subscribeToNewsletterDirective);
function subscribeToNewsletterDirective(){
return {
restrict: 'A',
scope: {},
bindToController: {},
controllerAs: 'subscribe',
controller: subscribeToNewsletterCtrl,
link: function(scope, el){
el.addClass('subscribe-to-newsletter');
}
}
}
function subscribeToNewsletterCtrl($scope, $http){
this.states = {
loading: false,
success: false,
error: false
};
this.email = '';
this.submitEmailSubscribe = function(){
console.log('submitting');
}
}
コンソール ログは登録されません。デスクトップで問題なく動作します。奇妙なのは、クラスng-submitted
がフォームに追加されていることです。
ng-submit
および touch イベントで何か不足していますか?