@DarCKoder

Проблема с фильтром в Angular.js, что делать?

Не получается отфильтровать массив, по имени и статусу,
Проблема заключается в фильтре, когда прописываю filter:query фильтрация работает нормально, но а когда :
<input type="text" ng-model="query">
    	<ul>
    		<li ng-Repeat="phone in phones | filter:{name:query, status:true}">


все элементы массива исчезают

весь исходник:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Angular</title>
	<script src="angular.min.js"></script>
    <script src="script.js"></script>
</head>
<body ng-app="myApp">
	<div ng-controller="firstCtrl">
        <p>Hello {{name}}</p>
    </div>

    <div ng-controller="PhoneListCtrl">
        <input type="text" ng-model="query">
    	<ul>
    		<li ng-Repeat="phone in phones | filter:{$query, status:true}">
    			<span>{{phone.name}}</span>
    			<p>
                    {{phone.snippet}}<br>
                    Status: {{phone.status}}
                </p>
    			
    		</li>
        </ul>  
      </div>


myApp.controller('PhoneListCtrl', function($scope){
	$scope.phones  = [
		{'name' : 'Nexus',
		 'snippet' : 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.',
		 'status': true},
		{'name' : 'HTC',
	 	 'snippet' : 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.',
	 	 'status' : false},
	 	{'name' : 'Huawei',
	 	 'snippet' : 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.',
	 	 'status' : true}
	];
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
var phones = []; // наша исходная коллекция
$scope.updateList = updateList;
updateList();

function updateList(name, status) {
    // логика упрощенная, должно быть явно не так но передает суть.
    $scope.phones = phones.filter(function (phone) {
        return -1 !== phone.name.indexOf(name) && phone.status === status;
    });
}


что-то в этом духе. Не создавайте себе проблем на ровном месте используя фильтры для того, для чего они изначально предназначены небыли.

p.s. проверьте темплейт на опечатки. У вас там затесался лишний знак доллара.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Rocket Брянск
от 60 000 до 100 000 ₽
27 мая 2024, в 16:44
1000 руб./за проект
27 мая 2024, в 16:41
100000 руб./за проект
27 мая 2024, в 16:38
100000 руб./за проект