与angularjs Modal共享范围的问题

时间:2015-02-28 07:31:59

标签: angularjs twitter-bootstrap modal-dialog angularjs-scope

我试图从角度引导UI获得模态对话。一切正常,除了调用者屏幕上也存在的少数字段。当我在模态上更新它们的值时,这些字段也会更新。例如,如果我在呼叫者上显示名称字段并单击它以进行编辑,则编辑的文本也会显示在呼叫者屏幕上。虽然我已经为模态创建了单独的控制器,但它仍然以某种方式共享相同的范围。我已经尝试过"控制器作为"调用者控制器的语法,但我仍然有同样的问题。我不能将控制器作为模态的语法,因为我不知道是否有办法做到这一点。如果你们中的任何人知道如何解决这个问题,那将是一个很大的帮助!这里是 plunker http://plnkr.co/edit/glcw3bjPVPDesq05lg47?p=preview

1 个答案:

答案 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());
  });

因此,如果单击“取消”按钮,您只需丢弃复制的人。