Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   factory как хранилище данных из БД (https://javascript.ru/forum/angular/65758-factory-kak-khranilishhe-dannykh-iz-bd.html)

Davert 06.11.2016 14:00

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();
    }

}]);


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

krasovsky 07.11.2016 05:37

НАверное не factory а service тебе надобен, ибо первый инициализируется каждый раз при инжекте, а второй один раз, и во всех остальных местах юзается этот "один".


Часовой пояс GMT +3, время: 21:07.