2017-03-03 63 views
0

有一個應用程序使用Bootstrap Angular UI,變量爲$scope.companies。在點擊一個按鈕時,第一個模式打開,該變量的公司顯示在select元素中。Angularjs和BootstrapUI - 如何根據另一個模式中的更改更新變量

用戶可以點擊添加一個新公司按鈕來打開一個新的,第二個,現有的模式(在現有的模式上),他可以創建一個新的公司。

關閉第二個模式後,用戶返回到第一個模式,但select元素中的公司沒有使用剛剛創建的新公司更新。

我的問題是 - 如何更新第一個模式,以便它反映出對$scope.companies的更改,並且該新公司在select元素中可用?

在我使用一個工廠主控制器(」 sharedCompanies)來檢索公司:

sharedCompanies.getCompanies().then(function(data){ 
    $scope.companies = data; 
} 

比,每次當我打開一個新的模式我做這樣的事情傳遞範圍,像這樣:

$scope.newCompany = function() { 
    var newCompanyModalInstance = $uibModal.open({ 
     templateUrl: '/static/partials/newCompanyModal.html', 
     controller: 'NewCompanyCtrl', 
     size: 'lg', 

     resolve: { 
      events: function() { 
       return $scope.events; 
      }, 
     }, 
     scope: $scope 
    }); 

在每種模式中,我可以訪問$scope.companies並且它們顯示正確。新公司成功創建,但爲了在select元素中可見,我需要關閉模塊並再次打開它們...

如何在新元素已更新後更新這些模式中的$scope.companies變量添加?

+0

你是如何加入新公司的? – Ladmerc

回答

0

感謝您的意見創建關閉第二模式新增公司的數據推入$scope.companies之前,一個新的公司後!在您的幫助下,我診斷出這個問題:我沒有從模態中返回正確的數據!有什麼要添加在第二模式東西線這樣的:

$http.post(addNewCompanyAndServicesApiURL, data) 
     .then(function successCallback(response) { 
      $scope.companies.push(response.data); 
      $uibModalInstance.close({ 
       companies:$scope.companies, 
      }); 
     }, function errorCallback(response){ 
      //... 
     }); 

,這部分在第一模趕上從第二個反應:

newCompanyModalInstance.result.then(function (data) { 
     $scope.companies = data.companies; 
    }); 

這解決了我的問題! :)

0

在第二模式使用$scope.companies.push(newlyCreatedCompany)

+0

這就是我已經在我的代碼中。我所缺少的是我如何將數據從該模式返回到以前的範圍!感謝您的好建議! – user1544500