2014-08-27 45 views
2

我目前正在嘗試ngTouchng-click指令在我的應用程序中,它似乎打破了大多數移動設備(Android/iOS)中的一些基本功能。當包含ngTouch作爲依賴關係時,包含在具有ng-click指令的html元素中的複選框和視頻不起作用。ngTouch的ngClick防止複選框和視頻在大多數移動設備上工作

重擊者是here。至於查看問題,您可以使用Google Chrome's Emulation功能來模擬該問題,我建議查看它在plunker's embededd view

考慮這個標記時0​​是作爲移動設備的依賴:

<div ng-controller="AppController" ng-click="doSomethingAwesome()"> 
    <input type="checkbox" id="chk-1"> 
    <label for="chk-1">This checkbox and video does not work</label> 

    <video width="320" height="240" controls> 
    <source src="http://www.w3schools.com/tags/movie.mp4" type="video/mp4"> 
    <source src="http://www.w3schools.com/tags/movie.ogg" type="video/ogg"> 
    Your browser does not support the video tag. 
    </video> 
</div> 

你必須點擊視頻或複選框幾次(有時更多)剛剛選中複選框檢查或播放視頻。然而,在應用程序中刪除ng-click指令或刪除應用程序中的ngTouch依賴項解決了該問題,但我也想使用ngTouch指令和服務。

如果任何人都可以向我解釋這一點或指出我在正確的方向,將不勝感激。

回答

1

我通過創建另一個與原始ngClick指令類似的指令解決了該問題,並在父元素上使用該指令,而不是使用ngClick

UPDATED 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(); 
     }); 
     }; 
    } 
    }; 
});