2015-12-08 5 views
1

Я хочу фильтровать уникальные значения из ng-опций. Я получаю только дублированные записи, и если я модель, я получаю целую кучу пустых строк. Я создал плунжер. Приветствуется помощь.Angularjs Filter ng-options для уникальных значений

заранее спасибо

http://plnkr.co/edit/UCI6mVHjEiyZTYUpQ18Y?p=preview

<select ng-options="c.metaInfo.subType for c in myArray"> 
+2

Но $ scope.myArray не является массивом ... –

+0

это объект JSON. – Jimi

+0

$ scope.myArray = "Результаты": { "type": "application/doc", ... это не объект –

ответ

1

Здесь работает Plunker

Ваш код имеет несколько проблем: в первую очередь myArray не является ни объектом или массивом, это неправильный синтаксис, вместо этого проверьте мой.

Затем, чтобы использовать ng-options, вам также необходимо установить ng-model.

JS:

var myApp = angular.module('myApp', []); 

myApp.controller("Test", function($scope) { 
    $scope.myArray = [{ 
     "type": "application/doc", 
     "url": "www.google.com", 
     "metaInfo": { 
      "subType": "doc", 
      "filesize": "60kb" 
     } 
    }, { 
     "type": "application/pdf", 

     "metaInfo": { 
      "subType": "pdf", 
      "filesize": "60kb" 
     } 
    }, { 
     "type": "application/xls", 

     "metaInfo": { 
      "subType": "xls", 
      "filesize": "60kb" 
     } 
    }, { 
     "type": "application/pdf", 

     "metaInfo": { 
      "subType": "pdf", 
      "filesize": "60kb" 
     } 
    }]; 
}); 

HTML:

<body ng-controller="Test"> 
    <select ng-options="c.metaInfo.subType for c in myArray | unique:'metaInfo.subType'" ng-model="selected"> 
     <option value="">All</option> 
    </select> 
    <p>Selected: {{selected || "None"}}</p> 
    </body> 

Для удаления дубликатов вам нужен Угловой модуль как this one использовать фильтр unique.

Я обновил Plunker со всем, что вам нужно.

+0

спасибо за ответы, ребята, это имеет смысл , Как удалить дубликаты записей? – Jimi

+0

Как удалить дубликаты записей из выпадающего списка? – Jimi

+0

Я обновил ответ, чтобы удалить также дубликаты, пожалуйста, подумайте о том, чтобы принять ответ, если он решил вашу проблему. –

1

Вы должны изменить свой HTML код, как этот

<select ng-model="subType" ng-options="c.metaInfo.subType for c in myArray"> 
     <option value="">All</option> 
</select> 

и должны следовать синтаксис массива. Используйте нижеприведенный код:

$scope.myArray = [ 
    { 
     "type": "application/doc", 
     "url": "www.google.com", 
     "metaInfo": { 
     "subType": "doc", 
     "filesize": "60kb" 
     }, 

    }, 
    { 
     "type": "application/pdf", 
     "metaInfo": { 
     "subType": "pdf", 
     "filesize": "60kb" 
     }, 

    }, 
    { 
     "type": "application/xls", 
     "metaInfo": { 
     "subType": "xls", 
     "filesize": "60kb" 
     }, 

    }, 
    { 
     "type": "application/pdf", 
     "metaInfo": { 
     "subType": "pdf", 
     "filesize": "60kb" 
     }, 

    } 
    ]; 
Смежные вопросы