Отключить двухстороннее связывание в угловых?

Я использую угловой материал 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 в вашем основном виде.

Другие вопросы по тегам