각도 리소스에 의해 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
설정 되면 ngResource 모듈은 응답에서 수신 된 각 항목을 반복하고 리소스의 새 인스턴스를 만듭니다. 항목 사이의 깊은 사본 수신이 각도를 수행하고 수행 우리에게 특별한 방법으로 객체를 제공 클래스 ( , 등등)를true
Resource
$save
$delete
내부적으로 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 를 사용 하려면 응답을 변환해야합니다. 여기에서 방법 읽기
나는 이것으로도 어려움을 겪고 있습니다. 쿼리를 사용하여 서비스를 slighly 조정하여 내 솔루션은 다음과 같습니다.
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
이것이 누군가를 돕기를 바랍니다 ...
'program tip' 카테고리의 다른 글
Mojarra는 무엇입니까? (0) | 2020.11.28 |
---|---|
Eclipse 실행 가능 실행기가 동반 실행기 jar 창을 찾을 수 없습니다. (0) | 2020.11.28 |
POST를 사용하는 Javascript window.open 패스 값 (0) | 2020.11.27 |
C #! 조건부 속성? (0) | 2020.11.27 |
원격 RDP에서 로컬 컴퓨터로 파일 복사 (0) | 2020.11.27 |