javascript - AngularJS/IonicFramework 阻止切换时的多个 API 调用

标签 javascript angularjs ionic-framework

我已阅读本文并正在尝试实现类似的功能

“如果您使用切换按钮,例如:打开和关闭某项并且它到达 API 端点,请务必将该交互包装在计时器中,这样如果用户决定,您就不会多次调用该端点快速连续多次点击控件。稍等一下,然后点击端点。”

我有一个带有一系列切换开关的设置页面。我不想在每次切换发生变化时进行 API 调用,而是希望延迟将范围值传递到服务器的 API 调用。我想延迟X秒。但是,通过这样做

    $scope.settingsChange = function () {

        $timeout(function () {
            //save_notifications
            console.log('called');
           // Trigger API call
        }, 3000);
    };

所发生的一切只是将调用延迟了 3000 毫秒。如果我切换某项 3 次,控制台日志仍然会出现 3 次。

我完全知道这是因为我实现了超时功能。我不确定要实现什么才能获得海报在上面的引文中提到的功能。

非常感谢任何想法。

谢谢

注意:我的模板如下所示

        <ion-toggle ng-repeat="item in settingsData"
                    ng-model="item.checked"
                    ng-checked="item.checked"
                    ng-change="settingsChange()">
            {{ item.text }}
        </ion-toggle>

最佳答案

发起 API 调用后,阻止进行任何其他调用。

$scope.settingsChange = function () {

  if ($scope.processingSettingChange) return;
  $scope.processingSettingChange = true;

    $timeout(function () {
        //save_notifications
        console.log('called');
       // Trigger API call
       $scope.processingSettingChange = false;
    }, 3000);
};

您可能还想在 API 处理请求时禁用 UI。您应该能够使用相同的 $scope 变量和 ng-disabled

关于javascript - AngularJS/IonicFramework 阻止切换时的多个 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31953236/

相关文章:

jquery - AngularJS 像 JQuery 风格一样向多个元素注册点击事件

javascript - 根据 json 中的另一个字段获取值而不进行迭代 - Angular js

javascript - .split() 和 .replace() 一个字符串值,用于在 JavaScript 中过滤出所需的文本

css - 网页在 Windows 上放大

javascript - 用于 Google 图片搜索的 URL 格式?

javascript - 使用 javascript 选择 json 数组中的特定项目

php - 填充下拉框时,php 还是 javascript 更安全

javascript - 如何修复 html 输入类型 = 'number' 中超过最大值的输入?

cordova - Ionic 3 音量键事件捕获

angular - 属性 'onDidDismiss' 在 ionic 4 和 Angular 类型上不存在