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>

Это нормально при просмотре на ноутбуках / настольных компьютерах, но не работает на планшетах и ​​мобильных устройствах, например. айфон/айпад


person Oam Psy    schedule 30.07.2014    source источник


Ответы (3)


Попробуйте добавить ngTouch. Из документации:

Более мощная замена ngClick по умолчанию, предназначенная для использования на устройствах с сенсорным экраном. Большинство мобильных браузеров ждут около 300 мс после нажатия и отпускания перед отправкой события щелчка. Эта версия обрабатывает их немедленно, а затем предотвращает распространение следующего события щелчка.

Требуется установленный модуль ngTouch.

person Nicolai    schedule 30.07.2014
comment
Я читал о ngTouch, я бы предпочел не импортировать другую библиотеку в свой проект. - person Oam Psy; 30.07.2014
comment
@OamPsy, это не другая библиотека, а просто внешний модуль для angular - person Nicolai; 30.07.2014
comment
Ах, я вижу, есть ли какие-нибудь практические советы или примеры проектов? - person Oam Psy; 30.07.2014
comment
Импортировал ngTouch в свой проект и, похоже, решил проблему. - person Oam Psy; 30.07.2014

У меня такая же проблема.

Я попытался добавить библиотеку ngTouch и зависимость, но проблема осталась.

Мои статические элементы <div>, содержащие ng-click, работали нормально, но элементы div, созданные динамически (в ng-repeat на той же веб-странице), которые содержали ng-click, не работали. Нажатие на них просто ничего не делало.

Это произошло на моем iPhone 6, iPad и в Google Chrome, когда я попросил просмотреть мою веб-страницу на любом из типов устройств. Когда я просматривал ту же веб-страницу в IE или обычном Chrome, все ng-click работали нормально.

Решение состояло в том, чтобы использовать директиву ngMobileClick, описанную здесь, и изменить мои ng-click на ng-mobile-click.

После этого мои динамически созданные события кликов действительно срабатывали нормально, когда я нажимал на них на устройстве.

Очень странный.

person Mike Gledhill    schedule 15.09.2016

Была похожая проблема, когда ng-click внутри ng-repeat не срабатывал. Я исправил это, добавив $event.stopPropagation()

Ex:

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