Как отфильтровать массив json в angularjs?

0

У меня есть два значения $ scope, один из которых - массив, а другой - json array

$scope.extensions = ["jpg", "xlsx", "pdf", "docx", "mp4"]

$scope.files ={'exten':"jpg","Value":""filepath/data1.jpg"},{'exten':"pdf","Value":""filepath/data2.pdf"},{'exten':"mp4","Value":""filepath/data3.mp4"},{'exten':"jpg","Value":""filepath/data4.jpg"}

Изображение 174551

если я нажму на jpg box, он должен показать только data1.jpg и data4.jpg

вот мой код для переднего конца

<div style="padding-left: 100px;margin-top: 50px;">
                <div style="border: 1px solid cornflowerblue; width: 100px; height: 100px;float:left;margin-left: 50px;" ng-repeat="element in extensions">
                    <button ng-click="showFile(element)">{{element}}</button>
                </div>         
            </div>
        <br/>


 <div style="border: 1px solid cornflowerblue; width: 900px; height: 300px;margin-left: 50px;margin-top:100px;" ng-repeat="element in extensions"  ng-show="clickFile==element">
              {{element}}
        </div>
Теги:

2 ответа

1
Лучший ответ

var app = angular.module("testApp", []);
app.controller('testCtrl', function($scope){
  $scope.extensions = ["jpg", "xlsx", "pdf", "docx", "mp4"];

$scope.files =[{'exten':"jpg","Value":"filepath/data1.jpg"},{'exten':"pdf","Value":"filepath/data2.pdf"},{'exten':"mp4","Value":"filepath/data3.mp4"},{'exten':"jpg","Value":"filepath/data4.jpg"}];
  
  
  $scope.showFile = function(element){
    
    $scope.clickFile = element;
    }
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="testApp" ng-controller="testCtrl">

<div style="padding-left: 100px;margin-top: 50px;">
                <div style="border: 1px solid cornflowerblue; width: 100px; height: 100px;float:left;margin-left: 50px;" ng-repeat="element in extensions">
                    <button ng-click="showFile(element)">{{element}}</button>
                </div>         
            </div>
        <br/>{{clickFile}}
  
  <div style="border: 1px solid cornflowerblue; width: 900px; height: 300px;margin-left: 50px;margin-top:100px;" ng-repeat="file in files | filter:{exten:clickFile}">
              {{file.Value}}
        </div>

</div>

попробуй это

ng-repeat="file in files | filter:{exten:clickFile}"
  • 0
    спасибо работа как очарование :-)
0

У вас есть несколько решений, например создание собственного фильтра, соответствующего вашему делу (например, фильтр по расширению)

Но в отношении вашего примера вы также можете установить currentFilterValue и применить его непосредственно к ng-repeat.

Например:

showFile = function(element){
  /*...*/
  this.myFilterValue = element;
}


<div style="padding-left: 100px;margin-top: 50px;">
  <div style="border: 1px solid cornflowerblue; width: 100px; height: 100px;float:left;margin-left: 50px;" ng-repeat="element in extensions | filter:myFilterValue">
    <button ng-click="showFile(element)">{{element}}</button>
  </div>
</div>
<br/>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню