2016-09-12 2 views
0

В моем md-автозаполнении не отображаются данные и данные, не найденные в одно и то же время.
Автозаполнение углового материала нет данных или не найдено-сообщений

angular.module('BlankApp').controller('ctrl', function($scope, $q){ 
    $scope.items = [{name: 'item1', id: 1}, {name: 'item2', id: 2}, {name: 'item3', id: 3}]; 

    $scope.promisedItems = function(){ 
     var deferred = $q.defer(); 
     deferred.resolve(items); 
     return deferred.promise; 
    } 
}); 

<md-autocomplete md-selected-item="selectedItem2" md-search-text="searchText2" md-items="item in promisedItems()" md-item-text="item.name" md-min-length="0" placeholder="items"> 
    <md-item-template> 
     <span md-highlight-text="searchText2" md-highlight-flags="^i">{{item.name}}</span> 
    </md-item-template> 
    <md-not-found> 
     No states matching "{{searchText2}}" were found. 
    </md-not-found> 
</md-autocomplete> 

Check the following codepen

Attempt1 показывает данные, но не показывает 'не-найденную-сообщение'.
Пытается2 показывает «не найденное сообщение», но не отображает данные.

Я завернул его в обещание.
Как я могу заставить их работать одновременно?

ответ

0

Оказывается, md-autocomplete не выполняет «поиск работы» для вас. Вам необходимо реализовать поисковую логику и вернуть найденные элементы.

Я сделал свою поисковую логику, ака-фильтр, поэтому вам не нужно создавать тонны поисковых логик.

$scope.searchCollection = function (searchString, collection, propertyName) { 
     var deferred = $q.defer(); 
     var result = searchString ? collection.filter(createFilterFor(searchString, propertyName)) : collection; 
     deferred.resolve(result); 
     return deferred.promise; 
    } 

    function createFilterFor(searchString, propertyName) { 
     var lowercaseQuery = angular.lowercase(searchString); 
     return function filterFn(item) { 
      return (angular.lowercase(item[propertyName]).indexOf(lowercaseQuery) === 0); 
     }; 
    } 

Использование md-items="item in searchCollection(searchText, myCollection, 'propertyNameToSearchIn')"

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