Я немного новичок в угловых и я царапаю голову над этим. моя фабрика console.log
показывает, что первый раз через все определяется правильно, но фабрика почему-то переоценивает данные, которые я передаю ей undefined
. Вот мой код, начинающийся с HTML ввода, который проходит данные в контроллер затем на заводе:AngularJS Ajax получить вопрос
HTML:
<input type="text" placeholder="Enter Channel" ng-model="channel" ng-keydown="$event.which === 13 && cname(channel)"/>
Это направит в мой контроллер, что набранный в поле ввода после того, как введите ключ нажимается cnam(channel)
контроллера и завод:
angular.module('youtubePlaylistAppApp')
.factory('ytVids', function($http){
return{
getChannel: function(name){
console.log('name: '+name);
var url = 'https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername='+ name +'&key=[my api key]';
console.log(url);
return $http.get(url);
},
getVids: function(channel){
console.log('channel: '+ channel);
return $http.get('https://www.googleapis.com/youtube/v3/playlistItems?part=snippet%2CcontentDetails&maxResults=50&playlistId='+channel+'&key=[my api key]')
.success(function(response){
//console.log(response.items);
return response.items;
});
}
};
})
.controller('indexCtrl', function ($scope, ytVids) {
$scope.cname = function(channel){
console.log(channel);
ytVids.getChannel(channel);
ytVids.getChannel().success(function(response){
console.log(response);
console.log(response.items[0].contentDetails.relatedPlaylists.uploads);
ytVids.getVids(response.items[0].contentDetails.relatedPlaylists.uploads)
.success(function(data){
console.log(data.items);
$scope.ytChannel = data.items;
});
});
};
});
Вот выход я вижу в моей консоли Девых инструментов после ввода при вводе в поле ввода:
первый консольный журнал console.log(channel);
консоль регистрирует правильный ответ. Если я типа «FreddieW» и нажмите клавишу ввода, то есть то, что регистрируется
Тогда я прохожу, что в мой завод ytVids.getChannel(channel);
и консоли журнал на заводе console.log('name: '+name);
Это регистрирует правильный ответ как в name: freddiew
Я тогда объявить переменная var url =
и дать ему URL YouTube и Concat название канала с URL
затем я утешать войти в переменную и получить то, что ожидается https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=freddiew&key=[my api key]'
Этот URL работает, когда я попробовал его в почтальона и просто жестко кодируя имя в., но передавая имя, консоль затем выплевывает еще несколько журналов, которые я не знаю почему, и похоже, что он переопределяет url, который я только что создал, чтобы сделать вызов, потому что это то, что записывается из завод:
name: freddiew
https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=freddiew&key=[my key]
затем регистрируется после этого, как undefined
и вызов апи concats undefined
с URL и делает вызов апи с этим undefined
URL
name: undefined
https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=undefined&key=[my key]
forUsername=
где название канала должно идти.
Кто-нибудь знает, почему он определяется как undefined
?
Я даже не понял! Спасибо, что поняли это. Было бы разумно, почему он звонил дважды .... – Chipe
@Chipe рада помочь вам, спасибо :-) –