2016-04-28 2 views
2

От другого контроллера открывается модальное всплывающее окно. При закрытии модального всплытия я сделаю что-то, и я хочу передать данные другому контроллеру, который заполняет сетку пользовательского интерфейса и привязан к $scope.searchResultsGridOptions.UI Обновление сетки в угловом

Так что в моем ABCCtrl.js файле:

На закрытии модального, я делаю:

$("#iConfirmationModal").on('hidden.bs.modal', function() { 
    $state.go('transaction.search.results', {}); 
    //I close all the modals 
    $uibModalStack.dismissAll(); 
    //I get the stored search criteria 
    var searchResultsParam = TransactionDataServices.getSavedSearchParams(); 


    //Using them I hit the web service again and get the data to reload the UI Grid 
    TransactionServices.getTransactionAdvSearchResults(searchResultsParam).then(function (result) { 

      //I got the result 
      console.log(result); 
      /Now I want to reload the grid with this data , but the grid scope object which binds to this , is in separate controller 
      searchResultsGridOptions.data = result; 
     }); 
    }); 

В DEFCtrl.js

У меня есть

getSearchResultsGridLayout: function (gridOptions, uiGridConstants, datas) { 
     gridOptions.multiSelect = false; 
     // gridOptions.data.length = 0; 
     // gridOptions.data = ''; 
     gridOptions.data = datas; 
     console.log("Grid Data "); 
     console.log(datas); 
     console.log(gridOptions.data); 
     angular.element(document.getElementsByClassName('grid')[0]).css('height', '0px'); 
     // console.log(datas.length); 
     return gridOptions; 
    } 

Но как бы Я только изменяю данные только тогда, когда модальный закрывается?

Остальное время он не должен обновлять сетку?

Или

Есть ли способ, когда на закрытии модального, вместо того, чтобы просто вернуться в состояние с помощью $state.for() и видящего предыдущих неотдохнувших данных, я могу увидеть обновленные данные?

ответ

0

Привет, мне кажется, вам не нужно вызывать «TransactionServices.getTransactionAdvSearchResults()» в контроллере «ABCCtrl», но вы должны называть его в контроллере «DEFCtrl».

Вам необходимо найти способ передать «searchResultsParam», извлеченный в «ABCCtrl», на «DEFCtrl».

Вы можете использовать ui-router state parameters. Вы можете задать параметр в состояние "transaction.search.results", как это:

.state('transaction.search.results', { 
    ... 
    params: { 
     searchResultsParam: null 
    } 
    ... 
}) 

А в "ABCCtrl" передать его государству:

$("#iConfirmationModal").on('hidden.bs.modal', function() { 
    //I close all the modals 
    $uibModalStack.dismissAll(); 
    //I get the stored search criteria 
    var searchResultsParam = TransactionDataServices.getSavedSearchParams(); 
    $state.go('transaction.search.results', {searchResultsParam: searchResultsParam}); 

Затем в «DEFCtrl «вы можете прочитать его и вызвать метод« TransactionServices.getTransactionAdvSearchResults() ».

Смежные вопросы