$ uibModal即使关闭也保持更改

时间:2019-05-23 05:55:58

标签: angularjs modal-dialog angular-ui-bootstrap

我正在尝试将uibModal集成到我的应用程序中,这将允许用户更改设置。我的问题是,如果我更改设置,然后不保存就关闭模式,则在打开模式备份时更改仍然存在。

我有我的普通控制器打开模式(所有内容都位于$scope上):

            var settings = $scope.site.smartboard_settings;


            var modalInstance = $uibModal.open({
                animation: true,
                backdrop: 'static',
                templateUrl: 'app/components/modals/modal.smartboard.settings.tpl.html?bust=' + Math.random().toString(36).slice(2),
                resolve: {
                    Settings: function() {
                        return settings;
                    }
                },
                controller: 'EditSmartboardSettingsModalController',
                controllerAs: '$ctrl'
            });

我有我的模态控制器:

.controller( 'EditSmartboardSettingsModalController',
    function( $uibModalInstance, $timeout, Settings ) {


        var $ctrl = this;
        $ctrl.settings = Settings;
        $ctrl.submitted = false;



        $ctrl.submitForm = function( isValid ) {
        ...
        ...

所以我打开模态并更改设置。然后,我关闭模态并重新打开它,更改后的设置仍会被修改。

我知道它一定与$scope有关,但是,我认为通过传递settings并使用controllerAs,那么我不应该在{{ 1}}。

1 个答案:

答案 0 :(得分:0)

当您传递参数时,Angularjs永远不会应对对象本身-这将非常昂贵。在此具体情况下,您应该在模式控制器中复制settng,例如:

$ctrl.settings = angular.copy(Settings);