0
HTTP 호출을 수행하고 특정 URL로 데이터를 가져 오는 서비스가 있습니다. 내가 뭘 하려는지 컨트롤러에서 서비스로 인수를 전달하고 내 URI에 매개 변수로 사용하는 것입니다.각도에서 컨트롤러에서 서비스로 인수 전달
예를 들어, 내 전화는 이제 api.myurl.com/foo이며 나는 그것이
바가 검색 양식에서 사용자의 입력을 api.myurl.com/foo/bar 만들고 싶어.
서비스
angular.module('MyApp').service('MyMapper', function(MyService, $http, $q, API_TR_URL, _, PAGINATION_LIMITS) {
function MyMapper() {}
MyMapper.prototype.find = function(params) {
var p = angular.copy(params);
p.limit = PAGINATION_LIMITS.myResolver;
var d = $q.defer();
var requestURL = API_TR_URL + '/app_dev.php/entities/' + param;
$http.get(requestURL)
.success(function(results)
{
console.log('Results data entities: ', results.data.data.entities);
for (var entitiesIndex in results.data.data.entities)
{
var preparedData = results.data.data.entities[entitiesIndex];
results.data.data.entities[entityIndex] = new Entity(preparedData);
}
d.resolve(results);
})
.error(function(status)
{
d.reject(arguments);
});
return d.promise;
};
return new MyMapper();
});
이 같은 컨트롤러 : 순간
, 내 코드는 다음과 같습니다angular.module('MyBackendApp')
.controller('MySearchFormController', ['$scope', 'API_TR_URL', 'MyMapper', '$location', function($scope, MyMapper, $location){
$scope.submit = function(){
console.log('-- Search string: '+ $scope.entityName);
var entitiesCount = Object.keys(data.data.data.entities).length;
$scope.totalPagesNum = Math.ceil(entitiesCount/10);
$scope.page = data.page;
var d = $q.defer();
// Build the results
$scope.entitiesResults = (function listEntities(entities, $scope){
var entities = data.data.data.entities;
if ((typeof entities === 'undefined') || (entities.length === 0)){
return null;
}
return entities;
})();
}
}
]);
나는 당신이 제안한 변경을했다. 그래서 엔티티 이름을 다음과 같이 전달합니다. MyMapper.find ({param : $ scope.a}); 어떻게하면 공장에서 액세스하여 다음 URL에 포함시킬 수 있습니까? var requestURL = API_TR_URL + '/app_dev.php/entities/'+ param; ? 사용할 수 없습니다. – thitami
'find'에서 또 다른 인자 ('param')를 사용하거나'params.param' 또는'p.param'을 참조 할 수 있습니다 ('p'는'params'의 복사본입니다). –
현재 MyMapper 팩토리는 호출되지 않습니다. 디버깅해야합니다. – thitami