Суть вопроса, есть некий профиль пользователя, в котором имеется редактирование данных, при сохранение данных они должны сразу же обновляться на странице, без ее перезагрузки.
Почитал интернет, понял, что для этого необходимо использовать $apply.
Сделал в контроллере "personalInfoCtrl" сохранение данных в виде:
$scope.saveUserData = function(form) {
var data = {
organization: $scope.edit.organization,
first_name: $scope.edit.first_name,
last_name: $scope.edit.last_name,
middle_name: $scope.edit.middle_name,
gender: $scope.edit.gender,
born_date: sliceData($scope.edit.born_date),
region_id: $scope.edit.region_id,
timezone: $scope.edit.timezone,
reg_postcode: $scope.edit.reg_postcode,
reg_address: $scope.edit.reg_address,
fact_postcode: $scope.edit.fact_postcode,
fact_address: $scope.edit.fact_address
};
ApiUser.updateInfo(data).then(function(res){
if (res.data.result == "success") {
$scope.edit.successChange = true;
$scope.edit.errorChange = false;
ApiUser.getInfo().then(function(res) {
if( !$scope.$$phase ) {
$scope.$apply(function(){
$scope.userData = res.data;
});
};
});
} else {
$scope.edit.errorChange = true;
$scope.edit.successChange = false;
}
});
};
После отправки данных на серв, я их запрашиваю и пытаюсь обновить scope c данным пользователя.
Так как scope userData лежит в главном контроллере "appCtrl" для всего сайта (родительским), а контроллер "personalInfoCtrl" вложенным для него, возможно по этой причине не могу его обновить. Либо не правильно делаю $apply.
angular.module('app.controller')
.controller('appCtrl', ['$scope', 'authService', 'AuthUser', 'userInfo',
function ($scope, authService, AuthUser, userInfo) {
'use strict';
if (authService.getAuthStatus()) {
$scope.userData = userInfo.data;
AuthUser.setRole(userInfo.data.role);
};
}]);
Хз в чем именно проблема. Объясните в чем прокол и как привести в норму все?