$resource($resource)쿼리 문자열 대신 분할 문자열(문자 배열) 반환
아래와 같이 각진 $리소스를 사용하고 있습니다.
angular.module('app')
.factory('data', function ($resource) {
var Con = $resource('/api/data', {}, {
update : {method : 'PUT'}
});
return {
getData : function (user_id, callback) {
return Con.query({user_id : user_id}, function (data) {
cb(data); // (breakpoint) HERE data is not good
}, function (err) {
cb(err);
}).$promise;
}
};
});
A가 데이터에 중단점을 지정하면 다음과 같이 표시됩니다.
[
['w','e','l','c','o','m','e'],
['h','e','l','l','o']
]
howerver, 서버는 다음을 송신합니다.
['welcome','hello']
왜 줄이 끊어졌는지 아는 사람?
감사해요.
Angular의 $리소스에서는 문자열의 원시 배열을 처리할 수 없는 재미있는 버그가 발생했습니다.해결책으로 다음 세 가지 중 하나를 수행할 수 있습니다.
- 대신 $sec 서비스를 이용하다
- 다음과 같이 서버를 통해 오브젝트 검색 응답을 전송합니다.
{ "stuff" : [ "your", "strings" ] }
- 응답 데이터를 위 형식의 클라이언트 측에 강제 적용합니다.$ resource 예:
methodName: {method:'GET', url: "/some/location/returning/array", transformResponse: function (data) {return {list: angular.fromJson(data)} }}
액세스 할 수 있습니다.data.list
답변은 https://stackoverflow.com/a/22491240/626810에서 보실 수 있습니다.
이것은 RAW 응답에 유효합니다.이는 상기 답변과 약간 다른 버전이지만 일반적인 것으로 JSON 응답에만 의존하는 것은 아닙니다.이것은 기본적으로 RAW 응답을 String 형식으로 변환합니다.결과적으로 $resource 약속 결과에 액세스해야 합니다.responseData
getAPIService() {
return this.$resource(this.apiUrl, {}, {
save: {
method: 'POST',
headers: {
'Accept': 'text/plain, text/xml',
'Content-Type': 'text/xml'
},
transformResponse: function (data) { return { responseData: data.toString() } }
}
});
}
$resource 대신 $http 사용
getRiskCount: function (Id,Type) {
var deferred = $q.defer();
var resource = $resource(urlResolverFactory.hostUrl() + '/api/getstudentriskcount',
{}, { query: { method: 'GET', isArray: false } }
);
resource.query({ userId: Id,userType: Type }, function (data) {
deferred.resolve(data);
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
}
Result - ['4','5','6','7']
getRiskCount: function (Id,Type) {
var apiUrl = urlResolverFactory.hostUrl() + '/api/getstudentriskcount';
apiUrl += '?userId=' + Id,
apiUrl += '&userType=' + Type;
var deferred = $q.defer();
var promise = $http({
method: 'GET',
url: apiUrl,
}).success(function (data) {
deferred.resolve(data);
}).error(function (data, status) {
deferred.reject(data);
});
return promise;
}
Result - [4567]
언급URL : https://stackoverflow.com/questions/24876593/resource-query-return-split-strings-array-of-char-instead-of-a-string
'programing' 카테고리의 다른 글
'목록' 유형은 '목록' 유형의 하위 유형이 아닙니다. (0) | 2023.03.16 |
---|---|
Classic ASP에서 JSON을 해석하기 위한 좋은 라이브러리가 있습니까? (0) | 2023.03.16 |
angular: 모델의 부울 값을 기반으로 버튼 텍스트를 전환합니다. (0) | 2023.03.16 |
React Faux DOM을 사용하여 D3 그룹화된 막대 차트에서 직사각형을 렌더링하려면 어떻게 해야 합니까? (0) | 2023.03.16 |
분류법 페이지에 태그 표시 (0) | 2023.03.16 |