2015-07-21 32 views
0

使用Angular我有一个数据集,它通过$ http.get调用,过滤然后显示在页面上。这个链接将按国家排序数据,有没有一种方法可以复制这个,但使用选择列表而不是文本链接。选择菜单中的角度更改事件

<a ng-click="sort_by('country');">Country</a> 

部分我app.js的

app.controller('customersCrtl', function ($scope, $http, $timeout) { 
     $http.get('ajax/getCustomers.php').success(function(data){ 
     $scope.list = data; 
     $scope.currentPage = 1; //current page 
     $scope.entryLimit = 20 //max no of items to display in a page 
     $scope.filteredItems = $scope.list.length; //Initially for no filter 
     $scope.totalItems = $scope.list.length; 
    }); 
    $scope.filter = function() { 
     $timeout(function() { 
      $scope.filteredItems = $scope.filtered.length; 
     }, 10); 
    }; 
    $scope.sort_by = function(predicate) { 
     $scope.predicate = predicate; 
     $scope.reverse = !$scope.reverse; 
    }; 
}); 

所以我想这是基于复制所选择的价值排序...

<select class="form-control"> 
    <option value="firstname">First name</option> 
    <option value="lastname">Last name</option> 
    <option value="company">Company name</option> 
</select> 
+1

您是否尝试过更换过滤器? – deostroll

+0

我试过ng-change ='sort_by(value)',但如果我说实话我不知道如何传递这个值。 – Rob

回答

0

首先,你必须将下拉列表绑定到一个名为sortValue的$ scope

<select ng-model="sortValue" class="form-control"> 
    <option value="firstname">First name</option> 
    <option value="lastname">Last name</option> 
    <option value="company">Company name</option> 
</select> 

在控制器中,设置手表以更改sortValue更改时的过滤器:

$scope.$watch('sortValue',function(newValue, oldValue){ 
    //newValue here is the selected value 
    $scope.sort_by(newValue); 
}); 
+0

这是完美的,谢谢! – Rob