2014-11-05 55 views
1

我正在使用ngTable和異步加載表格,但其中一列正在使用選擇過濾器,並且在調用表格數據時尚未解決然而。最初我使用本地JSON對象測試了ngTable,這個工作,但現在我不知道如何填充選擇。是否有可能以編程方式設置列的過濾器數據以填充選擇字段?ngTable如何以編程方式爲表格數據單元設置過濾器數據

ngTable細胞

<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; 
}; 
+0

您是否可以重現plunk中的錯誤,使用定時器來模擬網絡延遲? – 2014-11-05 13:37:38

+0

你使用的是'angular promises'還是'q promises'?和'RestService.getPackages()'return promise,不是嗎? – 2014-11-05 13:41:51

回答

1

我覺得在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; 
    }; 

和這裏工作example

+1

謝謝,這很好。 – mtpultz 2014-11-05 18:04:18

+0

@mtpultz我很高興幫助! – 2014-11-05 18:05:16

相關問題