为什么这不起作用?我正在使用"自定义下拉过滤器"来自ng-table网站上的example number 11。它们展示了如何使用静态数据获取下拉列表,而我需要它来处理API调用。
值得注意的是:在示例中,他们使用的是一个函数(必须是$ q的承诺):
filter-data="names($column)"
从ng-table v0.4.3开始,您现在可以通过指向$ scope变量来返回静态数据:
filter-data="someScopeVariable"
问题:
如果我以[{"id":1111,"title":1111}, ...]
的形式将其打印到视图中,我可以看到数据,但不会在ng-table下拉列表中显示。
在我的控制器中:
$scope.initNgTableData = $q.all([MyDataService.getMyData().$promise])
.then( function(result) {
var arr = [],
names = [];
data = result[0];
angular.forEach(data.items, function(item){
if (inArray(result[0], arr) === -1) {
arr.push(item.vlan);
names.push({
'id': item.vlan,
'title': item.vlan
});
}
});
$scope.ngtableMyData = names;
return $scope.ngtableMyData;
});
我已经尝试了两种获取数据的方法:
#1 scope.data变量 $ scope.ngtableMyData ,它解析为数组:
在我看来,我尝试过获取简单的数据:
<td class="col-md-1" data-title="'FOO'" filter="{ 'foo': 'select' }" filter-data="$scope.ngtableMyData" sortable="'foo'">
...
</td>
#2我也试过尝试使用函数来获得已解决的承诺 $ scope.initNgTableData():
<td class="col-md-1" data-title="'FOO'" filter="{ 'foo': 'select' }" filter-data="$scope.initNgTableData()" sortable="'foo'">
... </td>
我觉得这个问题与API的异步性有关。
注意: 你不能只指向任何JSON数组。返回的数据必须是带有&#34; id&#34;和&#34;标题&#34;的数组。请参阅上面链接的示例(示例11),了解它们如何塑造返回数据。
您可以尝试使用API调用http://plnkr.co/edit/wKgf04修改此Plunker (请注意,我使用的是$ resource而不是$ http)。