大神帮忙看看,小弟跪谢。
factory:
angular.module('starter.service',[])
.factory('ArticleFactory',function($rootScope,$resource,ENV){ var apiUrl=ENV.api;//请求url var topics={};//存储得到的数据 var resource=$resource(apiUrl, {},{query:{isArray:false}}); return{ getTopTopics:function(){ resource.query( { a: "getPortalList", catid: 20, page: 1 }, function(r){ return r.result; } ); } } });
controller:
.controller('articleCtrl',function($scope,ENV,ArticleFactory){
console.log(ENV.api); console.log(ArticleFactory.getTopTopics()); })
调用返回:
为什么不讲$resource直接返回呢?
方法ArticleFactory.getTopTopics()
是异步的
1.因为你的方法没有return任何东西。
2.如果你非要在getTopTopics里面进行异步,那么需要使用promise去进行return,不然还是undefined
建议使用下面的方法,return之前先进行查询。
.factory('ArticleFactory',function($rootScope,$resource,ENV){
var apiUrl=ENV.api;//请求url
var topics={};//存储得到的数据
var data = null;//定义一个变量接受返回的结果
var resource=$resource(apiUrl, {},{query:{isArray:false}});
resource.query(
{
a: "getPortalList",
catid: 20,
page: 1
},
function(r){
data = r.result;
}
);
return{
getTopTopics:function(){
return data;
}
}
});
这样就能获取到你想要的值了:console.log(ArticleFactory.getTopTopics());