使用带有可变$scope.companies
的Bootstrap Angular UI的应用程序。单击按钮时,第一个模态打开,其中该变量的公司在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
});
在每个模态中,i可以访问$scope.companies
,并且可以正确显示它们。新公司成功创建了,但是要在select
元素中可见它,我需要关闭模式并再次打开它们...
添加了新元素后,如何在这些模式中更新这些模式中的$scope.companies
变量?
在创建新公司后,在第二个模式下关闭第二款模式之后,使用$scope.companies.push(newlyCreatedCompany)
$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;
});
解决了我的问题!:)