我有一个网站,我需要在点击事件上获得一些去抖功能,我搜索网络找到一个合适的解决方案,但一直无法。
我有两个链接,每个链接都有自己的数据类型,这些数据用在下面的列表中。
<li ng-class="{'active' : type == 'own'}">
<a ng-click="changeType('own')" href="#"><span aria-hidden="true" class="icon icon-user"></span> Mine arbejdsgrupper</a>
</li>
<li ng-class="{'active' : type == 'all'}">
<a ng-click="changeType('all')" href="#"><span aria-hidden="true" class="icon icon-cabinet"></span> Foreslåede arbejsgrupper</a>
</li>
如果我快速切换,(单击第一个,然后是第二个)异步提取以获取数据无法跟随,那么我从列表中的第一个链接获取内容,即使我先点击第二个链接。
我可以看到有一个ng-model-options,但我无法弄清楚我是否可以在这里。 如果我需要使用下划线去抖,我会很难过,所以我需要$ scope。$将每个更改应用到范围。
任何人都有这方面的想法吗?
朋友送我这个。 How to write a debounce service in AngularJS 它应该解决问题。
答案 0 :(得分:0)
你在错误的层面上考虑这个问题。根据经验,我认为UI应该只有简单的交互,主要只是函数调用,即我尝试限制UI中的表达式和逻辑。
所以在点击这些方法后,我会在控制器中去抖。
angular.module('app-controlllers').controller('ACtrl', [
'$scope',
function ($scope) {
var debounceAllFn = _.debouce(function () {
// your actual function implementation
}. 500),
debounceOwnFn = _.debouce(function () {
// your actual function implementation
}. 500);
$scope.changeType = function (type) {
switch (type.toLowerCase()) {
'all' :
debounceAllFn();
break;
'own' :
debounceOwnFn();
break;
}
}
}
]);