Отключить двухстороннее связывание в угловых?
Я использую угловой материал 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
функция не ссылка?
1 ответ
В этом случае angular.copy()
должен сделать это. Есть много подходов к этому, но вы должны использовать простое решение - вот почему angular.copy()
следует сделать это на этот раз - попробуйте:
$scope.taskToEdit = angular.copy(task);
Это не отключает привязку E2E в AngularJS, но предотвратит обновление $scope
в вашем основном виде.