我在节点应用程序中使用JSON,并试图返回所有事件类别的Meetups.com列表,但Angular一直返回"angular.js:13708 TypeError: Meetup.getCategories is not a function“
这是我的事件页面的控制器:
angular
.module("Londate")
.controller("EventsController", EventsController);
EventsController.$inject = ["$state", "TokenService", "$rootScope", "Meetup"];
function EventsController($state, TokenService, $rootScope, Meetup) {
var self = this;
this.mapCenter = { lat: 51.5, lng: -0.1 };
this.category = 1;
this.allCategories = [];
this.all = [];
navigator.geolocation.getCurrentPosition(function(position) {
$rootScope.$evalAsync(function() {
self.mapCenter = {
lat: position.coords.latitude,
lng: position.coords.longitude
}
self.getEvents();
});
});
this.getEvents = function() {
Meetup.getEvents({
lat: self.mapCenter.lat,
lng: self.mapCenter.lng,
category: self.category
})
.then(function(events) {
console.log("EVENTS: " + events);
self.all = events;
})
}
this.getCategories = function() {
Meetup.getCategories({
name: self.name
})
.then(function(categories){
console.log("CATEGORIES: " + categories);
self.allCategories = categories;
})
}
self.getCategories();
}和后端的Meetup.js控制器:
var request = require('request-promise');
function getEvents(req, res) {
request.get({
url: "https://api.meetup.com/2/open_events",
qs: {
key: process.env.MEETUP_API_KEY,
lat: req.query.lat,
lon: req.query.lng,
category: req.query.category,
radius: req.query.radius || 1,
sign: true
},
json: true
})
.then(function(response) {
res.status(200).json(response.results);
console.log(response);
})
.catch(function(err) {
console.log(err);
res.status(500).json(err);
})
}
function getCategories(req, res) {
request.get({
url: "https://api.meetup.com/2/categories",
qs: {
key: process.env.MEETUP_API_KEY,
name: req.query.name,
sign: true
},
json: true
})
.then(function(response) {
res.status(200).json(response.results);
console.log(response);
})
.catch(function(err) {
console.log(err);
res.status(500).json(err);
})
}
module.exports = {
getEvents: getEvents,
getCategories: getCategories
}以及前端的meetup.js服务:
angular
.module("Londate")
.service("Meetup", Meetup)
Meetup.inject = ["$http"];
function Meetup($http) {
this.getEvents = function(params) {
return $http({
method: "GET",
url: "/api/meetups",
params: params
})
.then(function(res) {
return res.data;
});
};
}谢谢!
发布于 2016-09-14 22:38:47
解决了!我忽略了在服务中包含getCategories,如下所示:
angular
.module("Londate")
.service("Meetup", Meetup)
Meetup.inject = ["$http"];
function Meetup($http) {
this.getEvents = function(params) {
return $http({
method: "GET",
url: "/api/meetups/events",
params: params
})
.then(function(res) {
return res.data;
});
};
this.getCategories = function() {
return $http({
method: "GET",
url: "/api/meetups/categories"
})
.then(function(res) {
return res.data;
});
}
}https://stackoverflow.com/questions/39491828
复制相似问题