我已经阅读了这篇文章,并尝试实现类似的功能
“如果您正在使用切换按钮,例如:打开和关闭某些内容并且它会触及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>
答案 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