2013-03-20 3 views
0

У меня есть список выбора типов axleTypes, каждый из которых имеет свойство типа либо переднего моста, либо заднего моста. Я не могу отфильтровать повторяющиеся слова «Front» и «Rear».AngularJs - Фильтрация дубликатов в выбранном контроле

enter image description here

Update:

Html:

<select ng-model="axleType.Type" ng-options="type for type in uniqueTypes"> 

Контроллер:

$scope.axleTypes = API.GetAxleTypes(); 

    $scope.fixedAxleTypes = [ 
    { "$id": "1", "Description": "I beam, telescopic type shock absorbers", "Type": "Front", "Id": 1 }, 
    { "$id": "2", "Description": "Full-floating banjo housing", "Type": "Rear", "Id": 2 }, 
    { "$id": "3", "Description": "Something Else", "Type": "Rear", "Id": 2 }, 
    { "$id": "4", "Description": "I beam, telescopic type shock absorbers", "Type": "Front", "Id": 4 } 
    ]; 

    // This Works 
    $scope.uniqueTypes = _.uniq(_.pluck($scope.fixedAxleTypes, 'Type')); 

    // This does not 
    //$scope.uniqueTypes = _.uniq(_.pluck($scope.axleTypes, 'Type')); 

    // This does not 
    //$scope.uniqueTypes = _.uniq(_.pluck(API.GetAxleTypes(), 'Type')); 

Я полностью запутался. И да, API работает, я копия вставил выше данных из Chrome> Сети> Response оконного

+1

Не совсем уверен в том, что выражение «(axleType.Type)» используется для вашего применения фильтра. Поскольку это значение, которое имеет смысл только в контексте отдельных итераций понимания, которое не является контекстом, в котором работает фильтр (он выполняет свою работу до остальной части понимания), может быть, это так, Угловая попытка интерпретировать выражение, бесшумно терпит неудачу и, таким образом, пропускает применение фильтра? Возможно, стоит проверить консоль и, возможно, добавить немного фильтра в консоль, чтобы убедиться, что он оценивается. – Jollymorphic

+0

Я понимаю, что вы говорите. Похоже, что дефект, угловатый мне, что фильтрация происходит до того, как данные будут оцениваться. – Bye

ответ

0

Видя ошибку, которая была добавлена ​​в ваших изменениях, я уверен, что причина в том, что я описал в моем комментарии , который является использованием выражения (axleType.Type) для фильтра в контексте, где это выражение не может быть оценено. Поскольку вы не используете выражение в реализации фильтра, вы можете просто опустить его в целом, я полагаю.

+0

см. Обновление выше, пожалуйста, – Bye

+0

Вы хотите, чтобы я прокомментировал, является ли это «недостатком в угловом»? Под «ошибкой» я предполагаю, что вы имеете в виду «дефект дизайна», а не «ошибка». Потому что это не ошибка; это предполагаемое поведение. Так вы просто ищете мои комментарии к проектам дизайна Misko? – Jollymorphic

+0

Нет, я имел в виду изменения в своем оригинальном посте. – Bye

0

Я думаю, что API.GetAxleTypes(); должен выполнять некоторые задачи asynch, такие как вызов $http. , если это так, то $scope.axleTypes не будет того типа массива, который вы ищете. GetAxleTypes может выглядеть примерно так.

Определение сервиса:

{ 
    uniqueaxleTypes:[], 
    GetAxleTypes = function($http,..){ 
    var promise = $http({ 
     //config 
    }) 
    promise.then(function(response){ 
     this.uniqueaxleTypes = _.uniq(_.pluck(response.data, 'Type')); 
    }) 
    } 
} 

Тогда, если связать переменную области действия в этом uniqueaxleTypes она всегда будет отражать уникальные значения.

С $scope.fixedAxleTypes - это твердое кодированное значение, его рабочий режим.

+0

Попробуйте, как я мог, с вашим расплывчатым/кратким решением, я не мог заставить его работать. – Bye

Смежные вопросы