我正在尝试将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}}。
答案 0 :(得分:0)
当您传递参数时,Angularjs永远不会应对对象本身-这将非常昂贵。在此具体情况下,您应该在模式控制器中复制settng,例如:
$ctrl.settings = angular.copy(Settings);