使用过滤在AngularJS ngTable王氏嵌套的对象属性
问题描述:
我坚持NG-表过滤。使用过滤在AngularJS ngTable王氏嵌套的对象属性
在http://ng-table.com/#/filtering/demo-nested-property样品说,使用该语法成标记,下面示出。但是当我尝试在我的控制器中进行过滤时(下面的代码)它不起作用。
当我在控制器中获取过滤器对象时,使用该网站的示例,我得到 {tabela_tuss.descricao:"asda"}
。正确的是:{tabela_tuss:{descricao:"asda"}}
我:
//标记:
<table ng-table="tableParams" class="table table-bordered table-striped table-condensed">
<tr ng-repeat="row in $data track by row._id">
<td data-title="'Descrição'" filter="{ 'tabela_tuss.descricao': 'text' }" >{{row.tabela_tuss.descricao}}</a></td>
</td>
</tr>
</table>
为了工作,我需要一个过滤器:
filter="{ 'tabela_tuss:{'descricao': 'text' }}"
但是,如果我做到这一点,我得到一个错误的角度为:
angular.js:14328 Error: [$parse:syntax] Syntax Error: Token '}' is an unexpected
token at column 37 of the expression [{ 'tabela_tuss:{descricao': 'text'} }]
starting at [}].
我需要过滤器,在我的控制器使用方法: //控制器
dataService.getProcedimentos().then(function (response){
$scope.data=response.data;
$scope.tableParams = new NgTableParams({
page: 1, // show first page
count: 10,
sorting: {
nome: 'asc'
}
},
{ getData: function(params) {
var sdata = params.sorting() ? $filter('orderBy')($scope.data, params.orderBy()) : $scope.data;
sdata = params.filter() ? $filter('filter')(sdata, params.filter()) : sdata;
//sdata = params.filter() ? $filter('filter')(sdata, {tabela_tuss:{descricao:'B'}}) : sdata;
console.log(params.filter());
params.total(sdata.length);
sdata = sdata.slice((params.page() - 1) * params.count(), params.page() * params.count());
return sdata;
}
}
);
});
我的数据样本是:
data:[
{_id: "5927043517e34011e48d8444",
nome: "proced 1",
tabela_tuss:{id:1,descricao:'descr test'}
]
答
你得到解析语法错误,因为有一个语法错误。 从
filter="{ 'tabela_tuss:{'descricao': 'text' }}"
更改您的过滤器
filter="{ 'tabela_tuss':{'descricao': 'text' }}"
我同意你的看法。我已经测试过它。但是,如果使用它,我得到一个其它的错误:“angular.js:14328类型错误:在FN(EVAL在编译(角 :无法读取性能在t.getTemplateUrl的不确定 ‘的indexOf’(81 ngTableFilterConfig.ts)。 JS:15156),:4:306) 在范围$摘要(angular.js:17806) 在范围$应用(angular.js:18080) 在完成(angular.js:12210) 在completeRequest (angular.js:12436) at XMLHttpRequest.requestLoaded(angular.js:12364)“ –