所以我编写了一个服务来执行$ 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。 感谢您的帮助!
答案 0 :(得分:0)
查看日志,首先执行js控制台日志(console.log("record count in js = " + self.recordCount);
),因为服务调用是异步的。尝试使用回调函数,该函数在服务返回时设置变量。