Хорошо, у меня есть проблема, аналогичная этим двум сообщениям:
У меня есть директива с изолированной областью действия, которая называется так:
<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, чтобы обойти это, или есть лучший способ?