각도 리소스에 의해 2D로 해석되는 문자열의 1차원 배열
서버로부터의 다음 JSON 응답
[
"hello",
"world"
]
이 ngResource 서비스에 의해 2D 어레이로 해석되고 있습니다.
myService.factory('Name', function($resource){
return $resource(site_url+'api/accounts/:accountId/names/', {}, {
list: {method:'GET', params:{}, isArray:true}
});
});
그렇게 불리다
$scope.names = Name.list({accountId:$scope.account.id}, function(e){
console.log(e);
});
까지 추적.
[{"0":"h","1":"e","2":"l","3":"l","4":"o"},{"0":"w","1":"o","2":"r","3":"l","4":"d"}]
힌트 있나요?
TLDR; ngResource는 응답에 개체 또는 개체 배열을 요구합니다.
언제isArray
로 설정되어 있다.true
작업 목록에서 ngResource 모듈은 응답으로 수신된 각 항목에 대해 반복하여 리소스의 새 인스턴스를 생성합니다.이 작업을 수행하려면 Angular는 수신된 항목과 항목 간에 깊은 복사를 수행합니다.Resource
class: 특별한 메서드를 가진 객체를 제공합니다($save
,$delete
등)
출처를 확인해 주세요.
internal angular는 angular.copy를 사용하여 딥 복사를 수행합니다.이 함수는 오브젝트 및 어레이에서만 동작하며 문자열을 전달하면 오브젝트처럼 취급됩니다.
JS의 문자열은 각 문자에 대한 순차적 액세스를 제공함으로써 배열로 동작할 수 있습니다. angular.copy
문자열이 전달되면 다음 항목이 생성됩니다.
angular.copy('hi',{}) => {0:'h', 1:'i'}
각 문자는 인덱스가 키로 설정된 객체의 값이 됩니다. ngResource는 리소스에 속성을 제공합니다.0
그리고.1
.
선택할 수 있는 것은 다음과 같습니다.
하위 수준 $http 서비스 사용
$http.get('/res').success(function(data){
$scope.test = data;
});
json 응답에 개체 어레이를 반환합니다.
[{'data': "hello"}, {'data': "world"}]
응답을 가로채고 데이터를 변경합니다.
서버가 반환하는 데이터를 수정할 수 없고 ngResource를 사용하려면 응답을 변환해야 합니다.방법은 이쪽에서 확인
저도 이것 때문에 고생하고 있어요.다음은 쿼리를 사용하여 서비스를 슬림하게 조정한 솔루션입니다.
var app = angular.module('testApp', ['ngResource']);
app.factory('Name', function($resource, $sce) {
var path = "test.json";
return $resource(path, {}, {
query: {
method: 'GET',
isArray: false
}
})
});
app.controller('testController', function($scope, Name) {
$scope.result;
$scope.getResult = function() {
Name.query(function(data) {
$scope.result = data;
});
};
$scope.getResult();
});
HTML:
<!DOCTYPE html>
<html ng-app="testApp">
<head>
<link href="style.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-resource.min.js"></script>
<script src="script.js"></script>
</head>
<body ng-controller="testController">
<h1>{{result.surname}}</h1>
</body>
</html>
및 JSON 파일:
{
"name": "Homer",
"surname": "Simpson",
"Town": "Springfield"
}
또한 관심 있는 경우 Plunker를 지원합니다.http://plnkr.co/edit/SwqlZyqZ4zfcpaLxaf39
이게 누군가에게 도움이 되길...
언급URL : https://stackoverflow.com/questions/13813673/one-dimensional-array-of-strings-being-parsed-to-2d-by-angular-resource
'programing' 카테고리의 다른 글
유튜브에서 동영상을 더 제거하려면 어떻게 해야 하나요? (0) | 2023.02.23 |
---|---|
지난 30일 동안 데이터를 가져오기 위한 SQL 쿼리? (0) | 2023.02.23 |
숫자만 입력하도록 제한하려면 어떻게 해야 하나요? (0) | 2023.02.23 |
리액트 네이티브 모듈 테스트 방법 (0) | 2023.02.23 |
ESLint - TypeScript용 "no-used-vars" 설정 (0) | 2023.02.23 |