Angular中的服务未成功返回变量

时间:2016-06-15 17:37:55

标签: angularjs

所以我编写了一个服务来执行$ http.get调用并返回我模板功能所需的必要变量。我遇到的问题是,即使我能够在服务器端查看和记录数据,每当我调用我的服务并尝试访问它应该返回的变量时,我只是得到'未定义'。

我的服务如下:

function getResultsPage($http) {
        var fetchPage = function(pageNumber, filterType, searchVal) {
            var recordCount;
            var contactsPage = [];
            $http.get(
                    '/searchTotal?filterType=' + filterType + '&searchVal='
                            + searchVal).then(function(response) {
                recordCount = response.data;
                console.log("recordCount: " + recordCount);
            });
            $http.get(
                    '/search?filterType=' + filterType + '&searchVal='
                            + searchVal + "&pgNo=" + pageNumber).then(
                    function(response) {
                        response.data.forEach(function(contact) {
                            contactsPage.push(contact); // load search
                            // results into
                            // contactsPage
                        });
                    });
            return {
                recordCount : recordCount,
                contactsPage : contactsPage
            };
        }
        return {
            fetchPage : fetchPage
        };
    }

和我的控制器:

function ContactsController($http, $filter, getResultsPage) {
    var self = this;

    // Begin lazy loading code
    self.filterType = 'LastName';
    self.contactsPage = [];
    self.recordCount = 0;
    self.usersPerPage = 15; // this should match however many results your
    // API puts on one page
    self.pagination = {
        current : 1
    };
    self.pageChanged = function(newPage, filterType, searchVal) {
        self.filterType = filterType;
        self.recordCount = getResultsPage.fetchPage(newPage, filterType,
                searchVal).recordCount;
        console.log("record count in js = " + self.recordCount);
        self.contactsPage = getResultsPage.fetchPage(newPage, filterType,
                searchVal).contactsPage;
        console.log("contactsPage in js = " + self.contactsPage);
    };

    self.pageChanged(1, 'LastName', 'a');
    // End lazy loading code

以下是pageChanged函数中我的日志语句输出的图片:

澄清一下:我从我的查询中获取了1822个联系人,但是从我的控制器中我无法将该数字绑定到self.recordCount,并且我无法获得返回的联系人数组以成功绑定to self.contactsPage。 感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

查看日志,首先执行js控制台日志(console.log("record count in js = " + self.recordCount);),因为服务调用是异步的。尝试使用回调函数,该函数在服务返回时设置变量。