1
내가 현재 다음과 같은 간단한 공장이 컨트롤러에 사용 가능한 객체 소독 한 제작 :각도 JS는 - 서비스/공장에서 데이터를 조작하고
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 호출에서 반환 : 나는 다음에 내 공장을 바 꾸었습니다.
내 컨트롤러의 변수에서 '필터'변수를 콘솔에 연결하려고하면 '정의되지 않은'메시지가 나타납니다. 위의 공장 구문에서 잘못된 점은 무엇입니까?
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;
}
}
});
및 컨트롤러에서 다음과 같이 호출 : 공개적 filters
를 반환하는 것을 노출하지 않는 때문에
감사합니다. 측면 질문으로, 나는 connection.query()에서 가져온 'filters'객체가 내 컨트롤러에있는 것과 마찬가지로 리소스 객체라는 것을 알게되었습니다. 하지만 내 컨트롤러와 달리, 나는 그것을 해결하기 위해 '필터. 약속.'을 사용할 수 없다. 공장/서비스에 대한 약속은 어떻게 처리합니까? –
나는 자원이 그다지 필요 없다고 생각한다. 실수가 아니라면 약속을 되 돌리는 $ http이다. 가능한 한 컨트롤러에서 자원을 사용하여 어떻게 쓰레기를 게시 했습니까? –