Arhn - архитектура программирования

Двусторонняя привязка данных AngularJS не работает при изменении свойства изолированной области из кода?

Хорошо, у меня есть проблема, аналогичная этим двум сообщениям:

AngularJS: родительская область не обновлена в директиве (с изолированной областью действия) двусторонняя привязка

AngularJS: родительская область не обновлено в директиве (с изолированной областью действия) двусторонняя привязка

У меня есть директива с изолированной областью действия, которая называется так:

<sy-form form-values="customerData" on-save="save(customerData)"></sy-form>

Метод save(customerData) находится в родительской области и вызывается нажатием кнопки, что запускает следующий метод в изолированной области:

             $scope.save = function () {

                $scope.formValues = angular.copy($scope.formValuesEditable);

                var updatePromise = $scope.onSave();
                ...
            };

Метод save(customerData) в родительской области выглядит следующим образом:

scope.save = function (customerData) {

        return customerApi.update(customerData);

    };

Проблема, конечно, в том, что я изменяю объект formValues ​​с помощью этой строки кода:

$scope.formValues = angular.copy($scope.formValuesEditable);

между этим и вызовом $scope.onSave() -> save(customerData) нет цикла дайджеста, поэтому двусторонняя привязка данных не синхронизирует свойство customerData в родительской области, и неотредактированный объект сохраняется.

Читая различные сообщения, кажется, что единственным решением этого является вызов $scope.onSave(); в $ тайм-аут. Но это кажется немного хакерским. Как вы думаете, это хорошая идея использовать $timeout, чтобы обойти это, или есть лучший способ?


  • Вы можете поместить код директивы предпочтительно на скрипку 03.12.2014
  • разве вы не должны изменить $scope.customerData вместо $scope.formValues? 03.12.2014

Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..