Javascript 如何将函数返回到作用域变量中?
我试图使用一个工厂,我可以分配给一个范围的角度变量。但是,每当我尝试附加此变量并使用console.log返回此变量时,都会将函数作为文本而不是值返回。有没有办法把这个修好 =============JS==========Javascript 如何将函数返回到作用域变量中?,javascript,angularjs,Javascript,Angularjs,我试图使用一个工厂,我可以分配给一个范围的角度变量。但是,每当我尝试附加此变量并使用console.log返回此变量时,都会将函数作为文本而不是值返回。有没有办法把这个修好 =============JS========== annApp.factory('rssFeed', function() { return function() { var events = []; $.get('xmlfile', function(xml)
annApp.factory('rssFeed', function()
{
return function()
{
var events = [];
$.get('xmlfile',
function(xml)
{
var json = $.xml2json(xml);
jsonb = JSON.stringify(json, undefined, 3 );
// var events = [];
var description = json['#document']['rss']['channel']['item']['description'];
var title = json['#document']['rss']['channel']['item']['title'];
var date = json['#document']['rss']['channel']['item']['pubDate'];
events.push({'title': title, 'description':description, 'date': date});
return events;
});
return events;
}
annApp.controller('calendar', ['$scope', 'rssFeed', function($scope, rssFeed){
$scope.events = rssFeed;
console.log($scope.events);
}]);
如果您试图打印出对函数本身的引用,那么您得到的是正确的(DenimChicken提到的语法错误除外):
但是,由于
$.get
是异步的,您应该传入回调并在请求完成时调用它,或者使用承诺。您只是想调用rssFeed工厂并将其记录到控制台吗?在这种情况下,您需要调用函数console.log($scope.events())代码>同样,我相信返回事件后的行代码>应为};})代码>这里有一个正确返回函数的小提琴:我可以使用这里找到的另一个stackoverflow问题使回调函数正常工作。创建回调后,我无法在页面上显示对象数据,但是,我可以将对象返回到控制台窗口。想法?不能不看你的代码就说。如果您将它放在JSFIDLE中,发布链接,我来看看。您使用的是jQuery$.get
ajax方法,它不会通知Angular需要更新其绑定。如果您将其更改为使用Angular的$http
提供程序,它将正常工作。()此外,您使用的URL似乎有错误。
annApp.factory('rssFeed', function(){
return function(){
var events = [];
$.get('xmlfile', function(xml){
var json = $.xml2json(xml);
jsonb = JSON.stringify(json, undefined, 3 );
var description = json['#document']['rss']['channel']['item']['description'];
var title = json['#document']['rss']['channel']['item']['title'];
var date = json['#document']['rss']['channel']['item']['pubDate'];
events.push({'title': title, 'description':description, 'date': date});
});
return events;
};
}); // <-- added this
console.log($scope.events());