1

我有一个指令,其中包含一个 iScroll 元素,它是用来自 ng-repeat 的 li 构建的:

<div class="my-film">
    <div class="filmstrip-container">
        <div class="scroll-wrapper">

            <ul class="film-container">

                    <li ng-repeat="film in films" 
                        ng-mouseover="onMouseOverItem($event)" 
                        ng-mouseleave="onMouseLeaveItem($event)"
                        ng-click="openFilm()"
                        class='film-slide'>

                     ...nested videos etc in here.

                    </li>

            </ul>

        </div>
    </div>
</div>

在指令的链接函数中,我有这样的 onClick 函数

scope.openFilm = function() {
    ...code to open the film and play
}

这在桌面上完全按预期工作,但是在触摸屏上(在 iPad 上测试)时 openFilm() 函数永远不会被调用,但是,该元素确实应用了 ng-click-active 类。

我在 li 元素上确实有其他事件侦听器,但删除这些并没有任何区别。会不会和 iScroll 有关系?

我们使用的是 Angular 1.3,并添加了 ngTouch。

4

3 回答 3

3

<script src="angular-touch.js"> 在初始化您的应用程序时尝试安装提供依赖项angular.module('app', ['ngTouch']);希望这会对您有所帮助。请参考此页面链接

于 2014-12-11T13:35:03.417 回答
2

这里的问题是 iScroll 阻止了我的触摸事件。在启动 iScroll 时将 {click: true} 作为选项传递可以解决问题。

于 2014-12-11T14:12:58.033 回答
2

iOS 为 ng-mouseover、ng-click、ng-mouseleave 等创建单独的事件。这意味着您的第一次点击将触发 ng-mouseover,您的第二次点击将触发 ng-click,而您在元素外的点击将触发 ng-鼠标离开。

可悲的是,我认为 ngTouch 可以解决 iOS 创建的这个问题,但它没有。它仅在您使用 css hover 时修复它,但如果您使用 java 脚本鼠标事件(包括 angular 事件)则不会修复它。

于 2015-02-26T17:58:41.583 回答