2014-09-12 61 views
5

AngularJS'de yazılmış bir cordova mobil uygulamasına sahibim. Benim uygulamada ng-touch eklemek, bazı html davranış düzgün çalışmıyor. Bu soruna bir örnek, ng tıklama ile ekli bir HTML öğesine sarıldığında onay işareti işaretlemeyen bir onay kutusunun tuhaf davranışıdır. Bu masaüstü/dizüstü bilgisayarlarda mükemmel çalışır, sorun mobil cihazlarda görünür.ng-click ve ng-touch mobil cihaz

Örnek:

Bu mobil cihazlarda çalışmıyor:

<div ng-click="alertSomething()"> 
    <input type="checkbox" ng-model="data" name="data" id="data" /> 
    <label for="data">This checkbox needs to be pressed a couple of times before it is marked as checked 
    in any mobile device.</label> 
    </div> 

bu bir düzgün çalışsa da:

<input type="checkbox" ng-model="anotherData" name="anotherData" id="anotherData" /> 
    <label for="anotherData">This checkbox responds correctly on mobile</label> 

tuhaf kısmı ng dokunuşlu modülü olduğunda olmasıdır kaldırıldı, beklendiği gibi düzgün çalışıyor. Lütfen bana yardım edin, bu sorunu birkaç saatliğine çözmeye çalışıyorum.

mobil bu plunker açmayı deneyin: Aslında önce bu soruna rastlamak http://plnkr.co/edit/6LPeJP9QO6NMSpNuQqtQ?p=preview

+0

ben jQuery dokunmatik yumruk (http öneririm jQuery kullanıyorsanız: //touchpunch.furf. com /) Son zamanlarda bir mini oyunda çalışıyorum tıklama/sürükleme/bırakma işlemine sahipti ve BETA'nın dokunmaya ihtiyacı yoktu ama sadece bu kütüphaneyi ekleyerek ve başka hiçbir şey yapmadan dokunma her şey için mükemmel çalışıyor. – GillesC

+0

bu kafalar için çok teşekkürler, ama ryeballar'ın cevabı benim için de geçerli. – Drake105

+0

Haha evet sadece bir öneri, bir cevap değil, yine de bir jQuery etiketi yoktu :) Eklenti esas olarak cevapla aynı şeyi yapıyor, sadece dokunma olaylarını dokunulmaz olaylara bağladı. – GillesC

cevap

5

, ne yaptığını belirli bir soruna yönelik ngTouch 'ın ng-click versiyonunu değiştirmek için bir tıklama etkinliğini taklit başka yönergeyi yaratmaktı.

FORKED PLUNKER

DİREKTİFİ

.directive('basicClick', function($parse, $rootScope) { 
    return { 
    compile: function(elem, attr) { 
     var fn = $parse(attr.basicClick); 
     return function(scope, elem) { 
     elem.on('click', function(e) { 
      fn(scope, {$event: e}); 
      scope.$apply(); 
     }); 
     }; 
    } 
    }; 
}); 

HTML

<div basic-click="alertSomething()"> 
    <input type="checkbox" ng-model="data" name="data" id="data" /> 
    <label for="data">This checkbox needs to be pressed a couple of times before it is marked as checked 
    in any mobile device.</label> 
    </div> 
+0

Çok teşekkür ederim! – Drake105

+2

Hey Teşekkürler, 2016, bulduğunuz herhangi bir başka çözüm var mı? – user2936008

İlgili konular