2015-04-18 3 views
3

Я немного новичок в угловых и я царапаю голову над этим. моя фабрика 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?

ответ

2

Я думаю, что у вас неправильный дополнительный служебный звонок.

.controller('indexCtrl', function ($scope, ytVids) { 
    $scope.cname = function(channel){ 
     console.log(channel); 
     //ytVids.getChannel(channel); <-- you should remove this & passed channel param in below call 
     ytVids.getChannel(channel).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; 
      }); 
     }); 
    }; 
    }); 
+1

Я даже не понял! Спасибо, что поняли это. Было бы разумно, почему он звонил дважды .... – Chipe

+0

@Chipe рада помочь вам, спасибо :-) –

Смежные вопросы