$uibModal 即使在关闭后也保持更改
$uibModal keeping changes even after closed
我正在尝试将 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
那么我不应该修改任何内容$scope
.
Angularjs 在传递参数时从不处理对象本身——这会非常昂贵。在这种具体情况下,您应该在模态控制器中复制设置,例如:
$ctrl.settings = angular.copy(Settings);
我正在尝试将 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
那么我不应该修改任何内容$scope
.
Angularjs 在传递参数时从不处理对象本身——这会非常昂贵。在这种具体情况下,您应该在模态控制器中复制设置,例如:
$ctrl.settings = angular.copy(Settings);