我试图从角度引导UI获得模态对话。一切正常,除了调用者屏幕上也存在的少数字段。当我在模态上更新它们的值时,这些字段也会更新。例如,如果我在呼叫者上显示名称字段并单击它以进行编辑,则编辑的文本也会显示在呼叫者屏幕上。虽然我已经为模态创建了单独的控制器,但它仍然以某种方式共享相同的范围。我已经尝试过"控制器作为"调用者控制器的语法,但我仍然有同样的问题。我不能将控制器作为模态的语法,因为我不知道是否有办法做到这一点。如果你们中的任何人知道如何解决这个问题,那将是一个很大的帮助!这里是
plunker
http://plnkr.co/edit/glcw3bjPVPDesq05lg47?p=preview
答案 0 :(得分:2)
这是因为您将person对象直接传递给模态控制器。而是通过将原始对象复制为:
来创建新的人物对象 resolve: {
person: function() {
// return selectedPerson;
return angular.copy(selectedPerson);
}
}
然后在单击“确定”时将此副本返回给调用者
$scope.ok = function() {
$modalInstance.close($scope.person);
};
$scope.cancel = function() {
$modalInstance.dismiss('cancel');
};
然后调用者可以得到它
modalInstance.result.then(function(personModified) {
$log.info('personModified = '+ personModified.name + ' Finished at: ' + new Date());
}, function() {
$log.info('Modal dismissed at: ' + new Date());
});
因此,如果单击“取消”按钮,您只需丢弃复制的人。