Angularjs разрешить postPromise не работает

0

В настоящее время я работаю над webapp файлом MEAN, и postPromise, похоже, не работает. Я пытаюсь извлечь данные из своего db и загрузить его как CSV. После небольшой отладки я сузил ее, чтобы postPromise не вызывался (console.log("Посмотрите, ma! я ran"), не запускался.) У меня одинаковый код работает должным образом в другом месте приложения, так что я немного озадачен.

UI-маршрутизатор:

.state('adminDownload', {
            url: '/download',
            templateUrl: '../../views/admin-download.html',
            resolve: {
                postPromise: ['users', function(users){
                    console.log('look, ma! I ran!'); //is not called
                    return users.getAll();
                }]
            },
            onEnter: ['$state', 'auth', function($state, auth){
                if( ! auth.isLoggedIn()){
                  $state.go('adminLogin');
                }
            }]
        });

пользователи фабрики:

    routerApp.factory('users', ['$http', function($http){
        var o = {
            users: []
        };

        o.getAll = function() {
            console.log('getAll was called');
            return $http.get('/users').success(function(data){
                angular.copy(data, o.users);
            });
        };

        o.create = function(user) {
            return $http.post('/users', user).success(function(data){
                o.users.push(data);
            });
        };

        return o;
    }]);

index.js, GET users:

/*GET users*/
router.get('/users', function(req, res, next) {
    User.find(function(err, users) {
        if(err) {
          return next(err);
        }

        console.log('get users called');//is not called
        res.json(users);

    });
});

Код преобразования CSV, если это действительно проблема, многие вещи закомментированы для целей отладки:

routerApp.controller('AdminCtrl', ['$scope', 'users', 'questions', function ($scope, users, questions){
    $scope.getData = function(){

        //get the results from user objects
        var data = [];

        console.log(users.users); //returns '[]'

        for (var i = 0; i < users.users.length; i++) {
            console.log('the loop got called');// is not called at users.users.length === 0
            console.log(users.users[i].results);
            $scope.data.push(users.users[i].results);
        }

        console.log('not in the loop any more :('); //is called

        // Convert Object to JSON
        var jsonObject = JSON.stringify(data);

        var convertToCSV = function(objArray) {
            var str = Papa.unparse(objArray);
            return str;
        }

        //console.log($scope.data);
        console.log(jsonObject); //returns '[]'
        //console.log(convertToCSV(jsonObject));

        //download .csv
        //window.open( "data:text/csv;charset=utf-8," + escape(convertToCSV(jsonObject)));

    };
}]);

общественности/просмотров/админ-greeting.html:

<div ng-app = 'routerApp', ng-controller = 'AdminCtrl'>
    <h1>Hello, Friend</h1>
    <button ng-click = 'getData()' href = 'data' download>Download Data</button>
</div>
<div ng-app = 'routerApp', ng-controller = 'AuthCtrl'>
    <button ng-click = 'logout()'>Logout</button>
</div>
  • 0
    Добро пожаловать в StackOverflow. «Теги», которые вы выбираете в своем вопросе, предназначены для ссылки на то, о чем вопрос, а не для ссылки на другие части вашего стека, к которым вопрос не имеет никакого отношения. Угловой код только вопрос. Угловые только метки.
  • 2
    @Carriemf Любая консольная ошибка?
Показать ещё 3 комментария
Теги:
angular-ui-router

1 ответ

0

Добавьте контроллер в определение состояния

    .state('adminDownload', {
        url: '/download',
        templateUrl: '../../views/admin-download.html',
        controller: 'AdminCtrl',
        resolve: {
            postPromise: ['users', function(users){
                console.log('look, ma! I ran!'); //is not called
                return users.getAll();
            }]
        },
        onEnter: ['$state', 'auth', function($state, auth){
            if( ! auth.isLoggedIn()){
              $state.go('adminLogin');
            }
        }]
    });
  • 2
    @Carriemf Это работает?
  • 0
    @VeeraBhadraRao, это имеет смысл, но, похоже, не работает. Я все еще получаю тот же вывод консоли.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню