angularjs - ngTable - 控制器中的动态过滤器问题
angularjs - ngTable - issue with dynamic filter in controller
我想为我的 ngTable 创建一个过滤器。
在根控制器中(不是在函数中)我这样做:
$scope.filters = {
nomSociete: 'test'
}
然后
$scope.tableParamsContacts.reload();
$scope.tableParamsContacts = new ngTableParams({
page: 1, // show first page
count: 10,
filter : $scope.filters,
sorting: {
nom:'asc',
prenom:'asc'
}
}, {
total: dataContact.length, // length of data
getData: function($defer, params) {
// use build-in angular filter
var filteredData = params.filter() ?
$filter('filter')(dataContact, params.filter()) :
data;
var orderedData = params.sorting() ?
$filter('orderBy')(filteredData, params.orderBy()) :
dataContact;
params.total(orderedData.length); // set total for recalc pagination
if(params.total() < (params.page() -1) * params.count()){
params.page(1);
}
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
有效
但是如果我放置
$scope.filters = {
nomSociete: 'test'
}
在我的控制器中的一个函数中:
vm.onClientSelect = function(affaire){
$scope.filters = {
nomSociete: 'test'
}
$scope.tableParamsContacts.reload();
}
它不起作用,过滤器的值没有出现在 ng table 中,并且 ng table 变空了。
我不明白为什么。
直接从您的 ngTableParams
中更改过滤器,如下所示:
$scope.filters = {
nomSociete: 'test'
}
$scope.tableParamsContacts.filter($scope.filters);
$scope.tableParamsContacts.reload();
我想为我的 ngTable 创建一个过滤器。
在根控制器中(不是在函数中)我这样做:
$scope.filters = {
nomSociete: 'test'
}
然后
$scope.tableParamsContacts.reload();
$scope.tableParamsContacts = new ngTableParams({
page: 1, // show first page
count: 10,
filter : $scope.filters,
sorting: {
nom:'asc',
prenom:'asc'
}
}, {
total: dataContact.length, // length of data
getData: function($defer, params) {
// use build-in angular filter
var filteredData = params.filter() ?
$filter('filter')(dataContact, params.filter()) :
data;
var orderedData = params.sorting() ?
$filter('orderBy')(filteredData, params.orderBy()) :
dataContact;
params.total(orderedData.length); // set total for recalc pagination
if(params.total() < (params.page() -1) * params.count()){
params.page(1);
}
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
有效
但是如果我放置
$scope.filters = {
nomSociete: 'test'
}
在我的控制器中的一个函数中:
vm.onClientSelect = function(affaire){
$scope.filters = {
nomSociete: 'test'
}
$scope.tableParamsContacts.reload();
}
它不起作用,过滤器的值没有出现在 ng table 中,并且 ng table 变空了。
我不明白为什么。
直接从您的 ngTableParams
中更改过滤器,如下所示:
$scope.filters = {
nomSociete: 'test'
}
$scope.tableParamsContacts.filter($scope.filters);
$scope.tableParamsContacts.reload();