AngularJS / IonicFramework可防止多个API调用切换

时间:2015-08-11 22:43:23

标签: javascript angularjs ionic-framework

我已经阅读了这篇文章,并尝试实现类似的功能

“如果您正在使用切换按钮,例如:打开和关闭某些内容并且它会触及API端点,请确保将该交互包装在计时器中,这样如果用户决定您就不会多次调用该端点快速连续多次点击控件。等一下,然后点击终点。“

我有一个带有一系列切换开关的设置页面。我不想在更改每个切换时执行API调用,而是希望延迟将调用范围的值传递给我的服务器的API调用。我想把它推迟X秒。但是,通过这样做

    $scope.settingsChange = function () {

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

所有这一切正在发生它只是将呼叫延迟3000ms。如果我切换3次,我仍然会出现3次控制台日志。

我完全清楚这是因为我实现了超时功能。我不确定在上面的引文中如何实现海报所提到的功能。

任何想法都非常感激。

谢谢,

注意:我的模板看起来像这样

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

1 个答案:

答案 0 :(得分:1)

启动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