2017-03-11 109 views
1

我使用的是角度材料md-dialog,当用户点击按钮(编辑按钮)显示对话框时,它将当前对象(表格中的一行)传递给showDialog函数,填充对话框字段其值:禁用角度中的双向绑定?

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

的ShowDialog功能:

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

但每当我编辑,在对话框出现在后面的表,在表格为得到相同的键击活绑定值值作为对话框,如果我单击外部(取消编辑)这些值保持坚持。 那么有没有办法禁用这种双向绑定,只是将对象的副本传递给showDialog函数而不是引用?

+0

有没有办法传递一个对象的副本?就在这里。创建一个副本,并将其传递给showDialog函数。你在问如何创建一个对象的副本?对象是什么样的?你有什么尝试? –

+0

嘿穆罕默德,我仍然在等待你在这里的回应:http://stackoverflow.com/questions/42717303/ng-show-display-the-contents-before-the-page-finished-loading/42717354#42717354 – lin

回答

3

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

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

这不会禁用E2E在AngularJS约束力,但它会阻止更新$scope在你的主视图中。