2017-02-10 4 views
0

Я пытаюсь создать ui-сетку с некоторым фильтром DDL (от получения данных). Если я попытаюсь использовать async: false, все работает отлично. Это вызов:Создать ui-сетку с асинхронным вызовом

var Documents = []; 

var solutionSetColumn = {}; 
var solutionSetFilters = []; 

LoadData = function() { 
     Documents = []; 
     $.ajax({ 
      type: "POST", url: url, 
       success: function (data) { 
       Documents = data.d; 
      }, 
      error: function (err) { 
      } 
     }); 
    } 
} 

$.ajax({ 
    type: "POST", url: url, 
    success: function (data) { 
     solutionSetColumn = { field: 'SolutionSet', displayName: 'Solution Set', width: 190, filter: { type: uiGridConstants.filter.SELECT, selectOptions: data.d } }; 
    }, 
    error: function (err) { 
     solutionSetColumn = { field: 'SolutionSet', displayName: 'Solution Set', width: 190 } 
    } 
});  

LoadData(); 

gridOptions = { 
    enableHorizontalScrollbar: 2, 
    enableVerticalScrollbar: 0, 
    enableFiltering: true, 
    data: Documents, 
    columnDefs: [ 
     { field: 'Name', displayName: 'Nome File', width: 200 }, 
     solutionSetColumn 
    ] 
} 

$scope.gridOptions = gridOptions; 
}); 

Как получить все асинхра без ошибок gridOption как COLDEF неопределенном? Очевидно, без setTimeout! Спасибо

ответ

0

Вам нужно переместить ваши $ scope.gridOptions (и определение опций) в путь успеха вашего вызова ajax.

+0

'TypeError: Невозможно прочитать данные свойства 'неопределенного', Очевидно, что вызов всегда async ... –

+0

Проблема в том, что у вас есть несколько вызовов asyn. Вы можете поместить каждый в свой родитель (как я предложил) или использовать обещания. См. Http://stackoverflow.com/questions/15299850/angularjs-wait-for-multiple-resource-queries-to-complete – Gerfried