在 angular 中禁用双向绑定?

Disable the two way binding in angular?

我正在使用 Angular material md-dialog,当用户单击按钮(编辑按钮)以显示对话框时,它会将当前对象([=23= 中的一行]) 并将其传递给 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
    });
};

但是每当我编辑对话框中的值时,table 的后面都有一个实时绑定,其中 table 获得与对话框相同的击键值,如果我在外面单击(取消编辑)这些值保持不变。 那么有没有一种方法可以禁用这种双向绑定,只将对象的副本传递给 showDialog 函数而不是引用?

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

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

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