Я пытаюсь использовать фильтр углового поиска следующим образом и не могу понять, что я делаю неправильно.
Это приложение должно иметь возможность использовать вход поиска для поиска всех названий производителей и элементов из контроллера.
Я знаю, что он работает некорректно, потому что в моем браузере отображается изображение и имя производителя. Оба объекта: производитель1 и производитель2, но он не показывает элементы, и функция поиска не работает.
Помощь очень ценится! Я новичок в Angular.
<div ng-controller="SearchCtrl">
<input type="search" ng-model="search" class="form-control" placeholder="Search Manufacturers, Solutions, Equipment, Etc.">
<manufacturer info="manufacturer1"></manufacturer>
<manufacturer info="manufacturer2"></manufacturer>
</div>
контроллер:
app.controller('SearchCtrl', ['$scope', function ($scope) {
$scope.manufacturer1 = {
name: 'Business Name',
items: [
'service1',
'service2',
'service3'
],
image: 'assets/images/image.png'
};
$scope.manufacturer2 = {
name: 'Other Business',
items: [
'product1',
'product2',
'product3'
],
image: 'assets/images/image.png'
};
}]);
Директива JS
app.directive('manufacturer', function() {
return {
restrict: 'E',
scope: {
info: '='
},
templateUrl: 'assets/js/directives/manufacturer.html'
};
});
Шаблон директивы:
<div class="col-md-4">
<h2 class="business-title">{{ info.name }}</h2>
<img ng-src="{{ info.image }}" class="feature-img" alt="image"/>
<ul>
<li ng-repeat="item in items | filter:search">
{{ info.items }}
</li>
</ul>
</div>
Поскольку директива manufacturer
имеет изолированную область видимости, поэтому у вас не может быть доступа к переменной search
внутри вашей директивы, вам необходимо передать переменную search
в директиву из attribute
директивы & включить это свойство внутри выделенной области действия, как это было сделано для info
переменная.
В основном вам нужно добавить serach: '='
внутри вашей выделенной области директивы, которая передаст значение поля ввода search
в директиву, используя search="search"
атрибута search="search"
. =
используется для двусторонней привязки для обновления результата поиска, так как пользователь будет изменять вход, информация будет автоматически фильтроваться.
наценка
<input type="search" ng-model="search" class="form-control" placeholder="Search Manufacturers, Solutions, Equipment, Etc.">
<manufacturer info="manufacturer1" search="search"></manufacturer>
<manufacturer info="manufacturer2" search="search"></manufacturer>
директива
app.directive('manufacturer', function() {
return {
restrict: 'E',
scope: {
info: '=',
search: '='
},
templateUrl: 'assets/js/directives/manufacturer.html'
};
});
Обновить
У вас неправильный html внутри вашего файла manufacturer.html
, в частности контент, показывающий элементы с использованием ng-repeat
<ul>
<li ng-repeat="item in info.items | filter:search">
{{ item }}
</li>
</ul>
search
..previously это serach