AngularJS - массив как фильтр - PullRequest
0 голосов
/ 11 июня 2018

Как мне установить фильтр в ng-repeat, который использует строки и массив строк?

HTML

<div ng-repeat="type in types| orderBy : 'name' | filter:{typology:currTipology}"

JavaScript

var myData = ['string_1', 'string_2', ['string_3', 'string_4']];

IЯ буду использовать кнопку для каждой записи myData, чтобы присвоить строковое значение «currTipology».

ОБНОВЛЕНИЕ Я пытаюсь лучше объяснить мою проблему.У меня есть данные основного объекта с 6 различными типологическими свойствами.Мне нужно разместить 4 кнопки: кнопки с 1 по 3 соответствуют от 1 до 3 свойствам «типологии»;последняя кнопка должна фильтровать от 4 до 6 свойств «типологии».Как мне использовать фильтры для последней кнопки?

Ответы [ 3 ]

0 голосов
/ 11 июня 2018

См. Фрагмент кода ниже для разбора подмассивов (это будет работать только для массивов глубиной 2 уровня).Надеюсь, что это делает работу:)

var app = angular.module("app", []);

app.controller("AppCtrl", function ($scope) {
  $scope.myData = ['string_1', 'string_2', ['string_3', 'string_4']];
  
  $scope.isArray = function (type) {
    return typeof type === 'object';
  }
  
  $scope.isString = function (type) {
    return typeof type === 'string';
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="app" ng-controller="AppCtrl">  
  <div ng-repeat="type in myData">
    <div ng-if="isString(type)">
      {{type}}
    </div>
    <div ng-if="isArray(type)" ng-repeat="subtype in type">
      {{subtype}}
  </div>
</div>
0 голосов
/ 11 июня 2018

Для нескольких фильтров вы можете сделать с функцией что-то вроде этого

<div ng-repeat="employee in employees | filter:{name: companyName} | filter:gradeFilter">

А в контроллере у вас есть функция фильтра что-то вроде

$scope.gradeFilter = function (employee) {
   if(employee.salary > 70000 && employee.exp > 3){ 
      return "Senior"
   } 
}
0 голосов
/ 11 июня 2018

Вы можете использовать фильтр следующим образом

<div ng-repeat="subject in results.subjects | filter:{grade:'C'}">
   <input ng-model="subject.title" />
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...