首页 文章

控制器中的角度去抖(非输入)

提问于
浏览
3

我有一个网站,我需要在点击事件上获得一些去抖功能,我已经搜索了网络以找到一个合适的解决方案但尚未能够 .

我有两个链接,每个链接都有自己的数据类型,这些数据用在下面的列表中 .

<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它应该解决问题 .

1 回答

  • 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;
            }
        }
    }
    ]);
    

相关问题