2014-09-12 13 views
5

Tôi có ứng dụng di động cordova được viết bằng AngularJS. Việc thêm ng-touch vào ứng dụng của tôi làm cho một số hành vi html không hoạt động đúng cách. Một ví dụ của vấn đề này là hành vi kỳ lạ của một hộp kiểm không đánh dấu kiểm tra khi nó được bao bọc trong một phần tử HTML gắn với ng-click. Điều này hoạt động hoàn hảo trên máy tính để bàn/máy tính xách tay, sự cố xuất hiện trên thiết bị di động.thiết bị di động ng-click và ng-touch

Ví dụ:

này không hoạt động trong các thiết bị di động:

<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> 

Trong khi người ta này hoạt động đúng:

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

Phần kỳ lạ nhất là khi các mô-đun ng chạm là loại bỏ, nó hoạt động đúng như mong đợi. Xin hãy giúp tôi, tôi đã cố gắng giải quyết vấn đề này trong một vài giờ.

Thử mở plunker này trên điện thoại di động: http://plnkr.co/edit/6LPeJP9QO6NMSpNuQqtQ?p=preview

+0

Nếu bạn đang sử dụng jQuery tôi sẽ đề nghị jQuery lạc đấm (http: //touchpunch.furf. com /) Gần đây tôi làm việc trên một trò chơi mini w mà đã nhấp/kéo/thả và đó là BETA không cần liên lạc nhưng chỉ cần thêm thư viện đó và không làm gì khác được thực hiện liên lạc hoạt động hoàn hảo cho tất cả mọi thứ. – GillesC

+0

cảm ơn bạn rất nhiều vì điều đó, nhưng tôi nghĩ câu trả lời của ryeballar cũng phù hợp với tôi. – Drake105

+0

Haha có chỉ là một gợi ý, không phải là một câu trả lời cộng với không có thẻ jQuery anyway :) Các plugin về cơ bản làm điều tương tự như câu trả lời, chỉ cần liên kết các sự kiện liên lạc với các sự kiện không chạm. – GillesC

Trả lời

5

Tôi đã thực sự đi qua vấn đề này trước đây, những gì tôi đã làm là để tạo ra một chỉ thị rằng mô phỏng một sự kiện nhấp chuột để thay thế phiên bản ngTouch 's ng-click cho rằng vấn đề cụ thể.

FORKED PLUNKER

CHỈ

.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

Cảm ơn bạn rất nhiều! – Drake105

+2

Hey Cảm ơn, 2016 của nó là có bất kỳ giải pháp khác mà bạn đã tìm thấy ?? – user2936008

Các vấn đề liên quan