В процессе разработки возникли проблемы со связностью ссылок между сервисом и контроллером.
Сейчас объясню на примере:
// Есть сервис, в нем хранится id и другие данные.
app.service('testService', function ($http, serverURL, $timeout) {
var self = this;
self.data = {
id: null,
token: null,
....
};
self.initMe = function () {
return $http({
method: 'GET',
url: serverURL + '/initMe/' + '?token=' + self.data.token
});
};
return self;
});
meModule.controller('MeCtrl', function (...) {
$scope.me = testService.data; // устанавливаем связь между scope и service
$rootScope.$on('initMe', function (e, data) {
testService.initMe().success(function (data, status, headers, config) {
// data.result - object
// $scope.me = data.result; // не работает
// или
// meService.data = data.result; // не работает
meService.data = data.result; //
$scope.me = meService.data; // Всё ок - приходится восстанавливать связь между scope и service :(
});
});
}
Вопросы:
1. Почему мы теряем связь между scope и сервисом на строках $scope.me = data.result или meService.data = data.result;?
2. Мб есть другие, более красивые пути, обновления данных в сервисах с внешнего API(GET запросы)?