1

我正在使用 Angular 材质md-dialog,当用户单击按钮(编辑按钮)以显示对话框时,它会获取当前对象(表中的一行)并将其传递给showDialog函数,并用其值填充对话框字段:

<button ng-class="showDialog(task)">Open dialog</button>

显示对话框功能:

$scope.showDialog = function (task) {
    $scope.taskToEdit = task;
    $mdDialog.show({
        controller: DialogController,
        contentElement: '#taskEdit',
        parent: angular.element(document.body),
        clickOutsideToClose: true
    });
};

但是,每当我在对话框中编辑值时,表格后面都会有一个实时绑定,表格的击键值与对话框相同,如果我在外部单击(取消编辑),这些值将保持不变。那么有没有办法禁用这两种方式绑定并将对象的副本传递给showDialog函数而不是引用?

4

1 回答 1

3

在这种情况下angular.copy()应该这样做。有很多方法可以解决这个问题,但您应该使用一个简单的解决方案 - 这就是为什么angular.copy()这次应该这样做 - 尝试:

$scope.taskToEdit = angular.copy(task);

这不会禁用 AngularJS 中的 E2E 绑定,但会阻止$scope在主视图中更新。

于 2017-03-11T10:43:18.973 回答