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
3 respuestas
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.
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);
}
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 ()
Preguntas relacionadas
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.