2015-08-07 2 views
1

Я взял проект, используя Angularjs. Существует система фильтрации. На самом деле, щелкните по категории , добавьте эту категорию в список. Показаны все отрасли, получившие эту категорию. Обратите внимание, что щелчок по уже выбранной категории удаляет эту категорию.Пустой массив перед нажатием

Я бы хотел щелкнуть , заменив категорию фильтрации, чтобы каждый клик не добавлял категорию. Как я должен изменить этот код:

$scope.changerCategorie = function(category , name){ 
    if(jQuery.inArray(category, $scope.selected) !== -1) 
    { 
     angular.forEach($scope.selected , function(obj,index){ 

      if(category == obj){ 
       $scope.selected.splice(index,1); 
       $scope.selected_name.splice(index,1); 
      } 
     }); 

    }else{ 
     $scope.selected.push(category); 
     $scope.selected_name.push(name); 
    } 
    $scope.selected_filter = $scope.selected.join(', '); 

} 

Я попытался это, но он не работает

$scope.changerCategorie = function(category , name){ 

     $scope.selected = 0; 
     $scope.selected_name = 0; 

     $scope.selected = category; 
     $scope.selected_name = name; 

     $scope.selected_filter = $scope.selected.join(', '); 

} 

и я получаю

$scope.selected.join is not a function 

Если удалить строку, связанную с selected.join Я получил еще одну ошибку после двух кликов:

Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: tags in selected_name, Duplicate key: string:l 

Как мне это сделать?

ответ

3

Я считаю, что предпочтительным способом опорожнения массива в javascript является установка его длины в 0: $scope.selected.length = 0.

Причина, по которой вы получаете ошибку при соединении(), заключается в том, что теперь вы устанавливаете $scope.selected непосредственно в категорию, которая не является массивом. Это исправит это: $scope.selected = [category];

Конечно, вам нужен только один из этих методов. Либо пустое, за которым следует толчок, либо прямое назначение. Также, если вы планируете полностью избавиться от функции множественного фильтра, в конечном итоге может быть лучше сохранить ее как категорию, а не массив.

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