Показать сообщение отдельно
  #1 (permalink)  
Старый 06.11.2016, 14:00
Новичок на форуме
Отправить личное сообщение для Davert Посмотреть профиль Найти все сообщения от Davert
 
Регистрация: 06.11.2016
Сообщений: 1

factory как хранилище данных из БД
Здравствуйте!
Изучаю angular и столкнулся со следующей проблемой.

Разные контроллеры используют одни и те же данные, потому решил хранить их в factory.
Но не могу понять, почему в таком случае возвращается переменная dbListWithTables = null, когда в консоль выводится правильный объект.

Код фабрики:
'use strict';

angular.module('labApp').factory('StorageFactory', ['$http', function ($http) {
    var storage = {};
    var err = '';
    var dbList = null;
    var dbListWithTables = null;

    storage.getDbListWithTables = function() {
        var conf = {
            method: 'GET',
            url: '/php/getDbInfoFull.php'
        };

        $http(conf).then(
            function successCallback(success) {
                console.log(success.data);
                dbListWithTables = success.data;
            },
            function errorCallback(error) {
                err = error.data;
            }
        );

        return dbListWithTables;
    };

    return storage;
}]);


Код контроллера, где вызывается функция getDbListWithTables()
'use strict';

angular.module('labApp').controller('navCtrl', ['$scope', 'StorageFactory', function ($scope, StorageFactory) {

    $scope.storage = StorageFactory;

    if ($scope.dbListFull === undefined) {
        $scope.dbListFull = $scope.storage.getDbListWithTables();
    }

}]);


Подскажите, пожалуйста, в чем может быть проблема?
Может я что-то не так понимаю.
Ответить с цитированием