【发布时间】: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