点击在移动设备或平板电脑设备上点击即可

时间:2014-07-30 08:38:21

标签: angularjs data-binding angularjs-scope angularjs-ng-click

在页面加载时,我有一个调用服务的控制器,然后将返回的数据绑定到某些$ scope.objects:

app.controller("MainController", function($scope, $http, serviceGetData) {

    serviceGetData.getData(function(data) {
        $scope.LoginCount = data.LoginCount;
        $scope.ProductInfo = data.ProductInfo;
        $scope.ProfileInfo = data.ProfileInfo;

        // Delayed binding
        $scope.OrderHistory  = { History: [] };
    }

    $scope.populateModel = function(model, values) {
        var isArray = $.isArray(values);

        $.each(values, function(key, value) {

            if (isArray) {
                key = this.key;
               value = this.value;
            }

            if (model[key] !== value) {
                model[key] = value;
            }

        });
    };
}

在我的HTML中,我尝试将$ scope.OrderHistory绑定为:

<h1><a href="#" ng-click="populateModel(OrderHistory  , { History: OrderEntries })" >View order details</a></h1>

在笔记本电脑/台式机上观看时这很好,但在平板电脑和移动设备上无法工作,例如iphone / ipad的

3 个答案:

答案 0 :(得分:10)

尝试add the ngTouch。来自文档:

  

用于触摸屏设备的默认ngClick的更强大替代品。在发送点击事件之前,大多数移动浏览器在点击和释放后等待大约300毫秒。此版本立即处理它们,然后阻止以下单击事件传播。

     

需要安装ngTouch模块。

答案 1 :(得分:2)

我遇到了同样的问题。

我尝试添加''库和依赖项,但仍然遇到问题。

包含ngTouch静态 <div>元素正常工作,但动态创建的div(在ng-click上相同的网页)包含ng-repeat没有工作。点击它们只是没有做任何事情。

当我要求在任何设备类型上查看我的网页时,这发生在我的iPhone 6,iPad和Google Chrome上。当我在IE或常规Chrome中查看同一网页时,所有ng-click都运行正常。

解决方案是使用ng-click指令described here并将ngMobileClick更改为ng-click

执行此操作后,当我在设备上轻触时,我动态创建的点击事件 会正常触发。

很奇怪。

答案 2 :(得分:0)

存在类似的问题,即ng-repeat内部的ng-click不会触发。 我通过添加$event.stopPropagation()

来解决此问题

例如:

<li ng-repeat="option in $scope.options">
   <span><a ng-click="trigger(); $event.stopPropagation()"></a></span>
</li>