【问题标题】:Use promise with angularjs user filter将 promise 与 angularjs 用户过滤器一起使用
【发布时间】:2017-08-12 01:26:20
【问题描述】:

我有一个用户过滤器。您可以看到下面的模拟示例(它返回的数据与它获取的相同,即 users_data_contents,实际上有函数调用):

var appModule = angular.module('appModule', [])
    .filter('filter_ghosts', function($rootScope){
        return function(users_data_contents){ // gets data from view
            return users_data_contents;
        };
    });

我需要在异步模式下使用它,但不太了解如何使用。我尝试过这样的事情:

var appModule = angular.module('appModule', [])
    .filter('filter_ghosts', function($rootScope){    
        function getPromised(){
            var cnt = 0, intrv = setInterval(function() {
                ++cnt;
                if (cnt>10) {
                    return function(users_data_contents){
                        clearInterval(intrv);
                        return users_data_contents;
                    }
                }
                if (cnt > 50) {
                    clearInterval(intrv);
                }
            }, 100);
        }
        getPromised.$stateful = true;
        return getPromised;
    });

但这不起作用。 应用过滤器的 html 如下所示:

<tr ng-repeat="user_data in usersList | filter_ghosts">
    ....

有人可以帮忙吗?

更新

最接近我的问题的解决方案在这里:AngularJS : Asynchronously initialize filter 然而,事实证明,更合适的方法是根本不使用过滤器,而是将转发器绑定到相应程序上更改的数组。

【问题讨论】:

  • 我不认为过滤器支持承诺。您需要做的是创建一个服务。并称之为
  • getPromised 根本没有得到任何东西。它没有返回语句。
  • 您能否定义async mode 的含义。我无法弄清楚你想要达到什么目标。你的意思是你想要回报一个承诺?

标签: javascript angularjs asynchronous promise angularjs-filter


【解决方案1】:

在范围内创建一个空数组。然后将您的ng-repeat 与过滤器绑定到该数组。然后在异步操作完成时用值填充该数组。

【讨论】:

    猜你喜欢
    • 2019-09-26
    • 2023-03-13
    • 2017-08-17
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 2019-03-31
    • 2011-05-31
    相关资源
    最近更新 更多