2016-12-14 73 views
0

我想添加到目錄分頁控制過濾。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是:

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

});

但是,它不起作用。它只適用於我添加以下文本框:

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

如果我寫例如1,然後我可以使用按鈕,他們的工作。 我想讓它不觸變文本工作(僅按鈕)

回答

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