Actualmente tengo

"Error de referencia no capturado: cbfunc no está definido"

Problema en mi desarrollo

.controller('PlaylistCtrl', function($scope, $stateParams, $http, httpGetData) {

console.log($stateParams.catID);

$scope.items = [];

httpGetData.getTerkini().success(function(response){
$scope.items = response.rss.channel.item;

});     

});

angular.module('starter.services', [])

.factory('httpGetData', function($http){

     var dataItems = {};

     dataItems.getTerkini = function(){
         return $http({

             method: 'JSONP',
             url:'http://json2jsonp.com/?callback=cbfunc&url=http%3A%2F%2Ffullcontentrss.com%2Ffeed.php%3Furl%3Dwww.bharian.com.my%252Fterkini.xml%26key%3D2%26hash%3D3b961c45997507e9d86fae68fa34a216ee866830%26max%3D10%26links%3Dpreserve%26exc%3D%26format%3Djson'

         });         
     }
    return dataItems;

});

¿alguien me puede ayudar? Gracias

0
Alex 11 dic. 2015 a las 10:50

3 respuestas

La mejor respuesta

Encontré que la respuesta es simplemente cambiar la URL al formato JSONP estándar en el que la devolución de llamada debe estar en callback = JSON_CALLBACK.

0
Alex 19 dic. 2015 a las 05:33

Primero, no está devolviendo una promesa en su fábrica. Cambiar a:

     return $http({

         method: 'JSONP',
         url:'http://json2jsonp.com/?callback=cbfunc&url=http%3A%2F%2Ffullcontentrss.com%2Ffeed.php%3Furl%3Dwww.bharian.com.my%252Fterkini.xml%26key%3D2%26hash%3D3b961c45997507e9d86fae68fa34a216ee866830%26max%3D10%26links%3Dpreserve%26exc%3D%26format%3Djson'

     }).then(function(response) { //promise here
           return response;
     })

En segundo lugar, en su API, está declarando un controlador 'cbfunc' para la respuesta de la API, por lo que necesitaría definirlo en su controlador:

function cbfunc(response) {
    console.log(response);
}
0
Tarun Dugar 11 dic. 2015 a las 08:34
angular.module('starter.services', [])

.factory('httpGetData', function($http){

 var dataItems = {};

 dataItems.getTerkini = function(){
     return $http({

         .....

     });         
 }
return dataItems;

Ahora mira tu código. Your dataItems es un objeto. así que para acceder o llamar a la función getTerkini necesita escribir

httpGetData.dataItems.getTerkini ()

Pero en lugar de hacer esto, lo que puedes hacer es,

angular.module('starter.services', [])
.factory('httpGetData', function($http){
return {
 var dataItems = {};  // I don't understand the purpose of having dataItmes. basically what you can do is, you can use it within factory. but if you want to return it than your way would be cool.
 getTerkini = function(){
     return $http({
        ..... //function is going to return promise which can be caught at controller.
     });         
 }
});

Entonces, puedes llamarlo así,

httpGetData.getTerkini ()

-1
micronyks 11 dic. 2015 a las 08:06
34218548