2014-09-12 65 views
5

我有一個用AngularJS編寫的cordova移動應用程序。在我的應用程序中添加ng-touch會導致一些html行爲無法正常工作。這個問題的一個例子是複選框的怪異行爲,當它被包裝在用ng-click附加的HTML元素中時,它不會標記檢查。這適用於臺式機/筆記本電腦,問題出現在移動設備上。ng-click和ng-touch移動設備

實施例:

這並不在移動設備工作:

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

雖然這一個正常工作:

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

最奇怪的是,當NG-觸控模塊是刪除,它按預期正常工作。請幫助我,現在我一直在試圖解決這個問題幾個小時。

嘗試在手機中打開此plunker:http://plnkr.co/edit/6LPeJP9QO6NMSpNuQqtQ?p=preview

+0

如果您正在使用jQuery我建議jQuery的觸摸衝牀(HTTP://touchpunch.furf。我最近在一個迷你遊戲w上工作它有點擊/拖放功能,它的測試版本不需要觸摸,只需添加該庫並不需要任何其他操作,使觸摸完美適用於所有應用。 – GillesC 2014-09-12 17:00:30

+0

非常感謝您的支持,但我認爲ryeballar的答案也適用於我。 – Drake105 2014-09-12 17:20:16

+0

哈哈是隻是一個建議,不是一個答案,再加上沒有jQuery標籤:)插件基本上做的和答案一樣,只是將觸摸事件鏈接到非觸摸事件。 – GillesC 2014-09-12 17:22:19

回答

5

其實我已經過這個問題之前來的時候,我所做的就是創建另一個指令,模擬點擊事件,以取代ngTouchng-click型號,適用於特定的問題。

FORKED PLUNKER

DIRECTIVE

.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

非常感謝! – Drake105 2014-09-12 17:21:56

+2

嘿,謝謝,它的2016年有沒有其他解決方案,你找到了? – user2936008 2016-02-24 20:15:33