Angularjs 和 BootstrapUI - 如何根据另一个模态中的变化更新一个模态中的变量
Angularjs and BootstrapUI - How to update variable in one modal based on changes in another
有一个应用使用 Bootstrap Angular UI 和变量 $scope.companies
。单击按钮时,第一个模式打开,其中来自该变量的公司显示在 select
元素中。
用户可以单击 添加新公司 按钮以打开新的第二个模式(在现有模式之上),他可以在其中创建新公司。
关闭第二个模式时,用户 returns 转到第一个模式,但是 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
变量?
在关闭第二个模式之前创建新公司之后的第二个模式中,使用 $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;
});
这解决了我的问题! :)
有一个应用使用 Bootstrap Angular UI 和变量 $scope.companies
。单击按钮时,第一个模式打开,其中来自该变量的公司显示在 select
元素中。
用户可以单击 添加新公司 按钮以打开新的第二个模式(在现有模式之上),他可以在其中创建新公司。
关闭第二个模式时,用户 returns 转到第一个模式,但是 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
变量?
在关闭第二个模式之前创建新公司之后的第二个模式中,使用 $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;
});
这解决了我的问题! :)