我一直收到以下错误:
editor.commit();
即使我在我的服务中注入了$ http,每当我将url粘贴到$ http.get命令中时,我都会在浏览器窗口中输出一个输出。
这是我的服务:
Cannot read property 'get' of undefined
at Object.getChannelIdFromYoutubeUsername
at Object.vm.creatorAccountCreationFormSubmit
这是我的控制器:
angular.module('adsomaApp').service('YoutubeService', function($log) {
var url = 'https://www.googleapis.com/youtube/v3';
function getChannelIdFromYoutubeUsername(youtubeApi, youtubeUsername, $http) {
var queryUrl = url + "/channels/?key=" + youtubeApi + "&forUsername=" + youtubeUsername + "&part=id";
return ($http.get(queryUrl).then(handleSuccess, handleError));
}
function handleSuccess(response) {
return response.data;
}
function handleError(response) {
if (!angular.isObject(response.data) || !response.data.message) {
return ($q.reject('An unknown error occurred.'));
}
return ($q.reject(response.data.message));
}
var youtubeService = {
getChannelIdFromYoutubeUsername: getChannelIdFromYoutubeUsername
};
return youtubeService;
});
答案 0 :(得分:2)
angular.module('adsomaApp').service('YoutubeService', function($log, $http) { }
你没有注入服务层,所以它显示了undefin
答案 1 :(得分:1)
两个基本变化:
将$ http注入服务
angular.module('adsomaApp').service('YoutubeService', function($http, $log) {
从此服务方法的参数中删除$ http
function getChannelIdFromYoutubeUsername(youtubeApi, youtubeUsername) {
问题在于,当从Controller调用此服务方法时,您不会发送第三个参数。其中,基本上意味着$ http将为null。 我通过在服务中注入$ http并排除方法签名中的第三个参数来解决这个问题。
这两项变更应该解决这个问题。我没有包含其余的代码。