AngularJS和Bootstrapui-如何根据另一种模式的变化在一个模态中更新变量



使用带有可变$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;
    }); 

解决了我的问题!:)

最新更新