代码之家  ›  专栏  ›  技术社区  ›  MortenMoulder

是否允许AngularJS中的conditional.filter()和.map()发生更改?

  •  2
  • MortenMoulder  · 技术社区  · 6 年前

    我有一个问题,我无法编辑页面的实际脚本。这意味着我不能添加AngularJS过滤器、指令等。我很有限,所以我只能编辑HTML。

    myArray.filter(x => x.Type == selectedType)
    

    然而,AngularJS抛出了一个错误,因为它也不允许我使用 .filter(function(){}) .filter(x => x) . 起初我认为这是lambda的问题,因为AngularJS可能不支持这一点,但事实证明,基本上不可能根据数组的属性过滤数组。

    这是我最初的目标:

    [{
        "id": "random",
        "type": "1",
        "name": "First tag"
    },
    {
        "id": "random-2",
        "type": "1",
        "name": "Second tag"
    },
    {
        "id": "random-3",
        "type": "2",
        "name": "Third tag"
    }]
    

    如果我这样做了 .filter(x => x.type = "2") ,我应该可以取回此列表:

    [{
        "id": "random-3",
        "type": "2",
        "name": "Third tag"
    }]
    

    看看这个小玩意儿: https://embed.plnkr.co/yudKIhsB2OQ9Phh0X1am

    HTML中的“过滤标记”应显示基于此条件的过滤标记(在正常JavaScript语言中工作):

    ng-change="vm.FilteredTags = vm.Tags.filter(x => x.type == vm.SelectedValue)"
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Pankaj Parkar    6 年前

    你可以过滤掉 type 匹配的属性值 vm.SelectedValue

    <p>Filtered tags: {{vm.Tags | filter: {type: vm.SelectedValue}: true }}</p>
    

    或者使用alias,这样会更简单,无需使用它 ng-change

    <div ng-repeat="vm.Tags | filter: {type: vm.SelectedValue}: true as FilteredTags">
       ... your sutff here...
    <div>