ngTable如何以编程方式设置表数据单元格的筛选数据

ngTable how to set filter-data for a table data cell programmatically

本文关键字:数据 单元格 筛选 设置 方式 编程 ngTable      更新时间:2023-09-26

我使用ngTable并异步加载表,但其中一列使用了选择过滤器,当调用它时,表数据尚未解析。最初,我使用本地JSON对象测试ngTable,这很有效,但现在我不确定如何填充select。是否可以通过编程设置列的筛选数据来填充选择字段?

ng表格单元格

<td data-title="'Status'" 
    sortable="'status'" 
    filter="{ 'status': 'select' }"
    filter-data="getStatus()"  // hasn't resolved yet and select is empty
    ng-bind="doc.status"></td>

控制器功能

$scope.getStatus = function() {
    var def = $q.defer();
    var arr = [];
    var status = [];
    // NOTE: RestService.getPackages() below isn't resolved and select is empty
    angular.forEach( RestService.getPackages(), function( item ) {
        // Check if status already exists
        if( arr.indexOf( item.status ) === -1 ) {
            // Store status for comparison to avoid duplicates
            arr.push( item.status );
            // Store status information for filtering
            status.push({
                'id': item.status,
                'title': item.status
            });
        }
    });
    def.resolve( status );
    return def;
};

我认为promise链接中的问题是由于调用RestService.getPackages()引起的,你应该通过回调来更明确地完成,这里是我的小例子:

$scope.getData = function() {
    var def = $q.defer();
    var Names = [];
    //simulate  network delay
    $timeout(function(){
      Names.push({
         title: "Enos",
        id: "Enos"});
      Names.push({
         title: "Nephi",
        id: "Nephi"});
    }, 1000);
    def.resolve(Names);
    return def;
  };

以及这里的工作示例。