2016-12-14 4 views
0

Я хочу добавить в dir Paginate control filtering.ng-click работает только после фильтрации, введя в поле

<tr dir-paginate="advert in adverts |orderBy:propertyName:reverse | filter: searchAdvert | itemsPerPage: pageSize"> 

Я имею CategoryId свойства в модели моих данных, и я хочу, чтобы фильтровать его с помощью выбрав одну из 4 кнопок, так что я написал код, как:

<button type="button" class="btn btn-default" ng-click="applyFilter(3)">Items</button> 
    <button type="button" class="btn btn-default" ng-click="applyFilter(4)">Accomodation</button> 

И в моем controlles is:

$scope.applyFilter = function(object) { 
    $scope.searchAdvert.categoryId = object; 
} 

});

Однако, это не работает. Он работал только для меня, только если я добавил следующее текстовое поле:

 <input type="text" placeholder="Search by Category" ng-model="searchAdvert.categoryId" /> 

И если я пишу, например. 1, то я могу использовать кнопки, и они работают. Я хочу, чтобы заставить его работать без THIX текстового поля (только кнопки)

ответ

1

Изменить applyFilter на:

$scope.applyFilter = function(object) { 
    if(!$scope.searchAdvert) 
     $scope.searchAdvert = {}; 

    $scope.searchAdvert.categoryId = object; 
} 

Ваш текущий код пытается установить значение categoryId на несуществующий объект. Ваш пример текстового поля создает объект $ scope.searchAdvert внутри и позволяет привязать categoryId.

+0

Спасибо! ваше решение работает! – Pawel

+0

Другой вопрос: теперь у меня есть также '' - это нормальное поле ввода. Почему при использовании кнопок в этом поле отображается '[object Object]' и как его предотвратить – Pawel

+0

@Pawel Если вы используете объект $ scope.searchAdvert для хранения информации об фильтрах, вы не можете напрямую привязать к нему текстовое поле. Если вы хотите привязываться к объекту, вам лучше всего подходит окно выпадающего меню/выбора. – KreepN