我目前有一个简单的工厂,如下所示:
myFactory.factory('myFactory', function($resource){
return $resource('http://to/my/api', {}, {
query: {
method: 'GET'
}
});
});
我想将我目前在控制器中进行的一些数据处理/卫生工作转移到我的工厂。我将工厂改为:
myFactory.factory('myFactory', function($resource){
var connection = $resource('http://to/my/api', {}, {
query: {
method: 'GET'
}
});
var filters = connection.query();
for(var i = 0; i < filters.data.length; i++){
// Get the name value in the data array
var name = filters.data[i].Name;
// Create new properties in $scope.filters and assign arrays to them. Each array is a separate filter
filters[name] = filters.data[i].Values;
}
return filters;
});
基本上我在上面做的是重新排序从AJAX调用返回的对象数组的结构。
当我尝试在我的控制器中从工厂控制记录我的'过滤器'变量时,我得到一个'未定义'消息。我上面的工厂语法出了什么问题?
答案 0 :(得分:2)
因为您没有公开曝光任何内容以返回filters
,请尝试:
myFactory.factory('myFactory', function($resource){
return {
getFilters:function(){
var connection = $resource('http://to/my/api', {}, {
query: {
method: 'GET'
}
});
var filters = connection.query();
for(var i = 0; i < filters.data.length; i++){
// Get the name value in the data array
var name = filters.data[i].Name;
// Create new properties in $scope.filters and assign arrays to them. Each array is a separate filter
filters[name] = filters.data[i].Values;
}
return filters;
}
}
});
并在你的控制器中调用它:
$scope.filters = myFactory.getFilters();
请原谅可怕的格式here's a plunk。