加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 重复内部的角度重复滤波器

发布时间:2020-12-17 17:08:22 所属栏目:安全 来源:网络整理
导读:我一直在努力制作一份地理位置列表,每种都有税收(并非所有税收都适用于所有地理位置). 因此,我对geozones进行了ng-repeat,并在每个内部进行了所有税收的ng-repeat.问题是我不知道如何发送此时正在过滤的geozone的id.这是现在的代码: md-option ng-repeat="t
我一直在努力制作一份地理位置列表,每种都有税收(并非所有税收都适用于所有地理位置).

因此,我对geozones进行了ng-repeat,并在每个内部进行了所有税收的ng-repeat.问题是我不知道如何发送此时正在过滤的geozone的id.这是现在的代码:

<md-option ng-repeat="tax in taxClasses | filter: filterTax" value="{{ '{{ tax.id }}' }}">{{ '{{ tax.name }}' }}</md-option>

和JS:

$scope.filterTax = function(tax,n){

        angular.forEach(tax.geoZone,function(geo){
           if(geo === $scope.prices[n].geozoneId){
               return true;
           } 
        });
        return false;
    };

需要n作为geozone的索引,或类似的东西.提前致谢!

解决方法

你的想法并不遥远,但使用过滤器:甚至不需要管道|已经是一个过滤命令:

ng-repeat="<var> in <array> | <filterFunction>:<...arguments>"

因此,您可以创建一个过滤器(有关详细信息,请参阅https://docs.angularjs.org/guide/filter)

ng-repeat="tax in taxClasses | filterTax: <geozoneIndex>"

集合中的值将作为filterTax函数的第一个参数传递.任何进一步的参数都以冒号分隔:.

当你使用它时,你必须传播这样的过滤方法:

app.module(...).filter('filterTax',function(/* injected services */) {
  return function (/* arguments */ input,geozoneIndex) {
    // function body
  }
});

或者使用范围中的过滤函数:

// template
ng-repeat="tax in filterTaxes(taxClasses,<geozoneIndex>)"

// script
$scope.filterTaxes = function(taxClasses,geozoneIndex) {
  // do the whole filtering,but return an array of matches
  return taxClasses.filter(function(taxClass) {
    return /* in or out code */;
  });
};

这意味着您的geozoneIndex可以是固定值,也可以从该范围内可用的变量中提取.

请注意,您的filterTax函数将被大量调用,因此如果您的页面变慢,您可能需要考虑优化该过滤.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读