나는 찾고 시도 모질라 JSON 캐릭터 라인 화 등 여기 SO Google에서뿐만 아니라 그 문서의 페이지하지만 설명을 찾을 수 없습니다. JSOn stringify를 여러 번 사용했지만이 결과를 보지 못했습니다.
JSON 객체 배열이 있습니다.
[
{
"param_2": "Description 1",
"param_0": "Name 1",
"param_1": "VERSION 1"
},
{
"param_2": "Description 2",
"param_0": "Name 2",
"param_1": "VERSION 2"
},
{
"param_2": "Description 3",
"param_0": "Name 3",
"param_1": "VERSION 3"
}
]
내 부착 $scope
및하기 위해 POST
하나의 paramater 내가 JSON.stringify () 메소드를 사용하고 난 다음을 얻을로 :
[
{
"param_2": "Description 1",
"param_0": "Name 1",
"param_1": "VERSION 1",
"$$hashKey": "005"
},
{
"param_2": "Description 2",
"param_0": "Name 2",
"param_1": "VERSION 2",
"$$hashKey": "006"
},
{
"param_2": "Description 3",
"param_0": "Name 3",
"param_1": "VERSION 3",
"$$hashKey": "007"
}
]
stringify 메소드에서 다음과 비슷한 것을 기대하면서 정확히 $$ hashkey가 무엇인지 궁금합니다.
[
{
"1":{
"param_2": "Description 1",
"param_0": "Name 1",
"param_1": "VERSION 1"
},
"2":{
"param_2": "Description 2",
"param_0": "Name 2",
"param_1": "VERSION 2"
},
"3":{
"param_2": "Description 3",
"param_0": "Name 3",
"param_1": "VERSION 3"
}
}
]
그것이 요인인지 확실하지 않지만 사용하고 있습니다. Angularjs 1.1.5, JQuery 1.8.2 and Spring 3.0.4 and Spring security 3.0.7 on the Server side
그것은 나에게 문제를 일으키지 않지만 나는 그 원인과 이유를 알고 싶습니다. $$hashkey
답변
Angular는 변경 사항을 추적하기 위해 이것을 추가하므로 DOM을 업데이트해야 할 시점을 알 수 있습니다.
angular.toJson(obj)
대신에 JSON.stringify(obj)
Angular 를 사용 하면 이러한 내부 사용 값이 제거됩니다.
또한 track by {uniqueProperty}
접미사 를 사용하도록 반복 표현식을 변경하면 Angular는 전혀 추가 할 필요가 없습니다 $$hashKey
. 예를 들어
<ul>
<li ng-repeat="link in navLinks track by link.href">
<a ng-href="link.href">{{link.title}}</a>
</li>
</ul>
항상 “링크”가 필요하다는 것을 기억하십시오. 표현의 일부-나는 항상 그것을 잊는 경향이 있습니다. 그냥 track by href
확실하게 작동하지 않습니다.
답변
유스 케이스 (결과 객체를 X2JS에 공급)에서 권장되는 접근법
data = angular.toJson(source);
$$hashKey
속성 을 제거하는 데 도움이 되지만 결과는 더 이상 X2JS에서 처리 할 수 없습니다 .
data = angular.copy(source);
$$hashKey
속성도 제거 되었지만 결과는 X2JS의 매개 변수로 사용할 수 있습니다.
답변
일반적으로 ng-repeat 지시문과 함께 제공됩니다. 돔 조작하기 AngularJS는 특별한 id를 가진 객체를 플래그합니다.
이것은 Angular와 공통입니다. 예를 들어 ngResource를 사용하여 객체를 얻는 경우 객체에 모든 리소스 API가 포함되며 $ save 등의 메서드가 표시됩니다. 쿠키를 사용하면 AngularJS가 __ngDebug 속성을 추가합니다.
답변
데이터에 id를 추가하지 않으려는 경우 배열의 인덱스를 추적하여 값 대신 배열의 위치에 따라 항목을 키 지정할 수 있습니다.
이처럼 :
var myArray = [1,1,1,1,1];
<li ng-repeat="item in myArray track by $index">
답변
Angular 1.3 이상을 사용하는 경우 ng-repeat에서 “track by”를 사용하는 것이 좋습니다. “track by”를 사용하는 경우 Angular는 배열의 객체에 “$$ hashKey”속성을 추가하지 않습니다. 배열의 무언가가 변경되면 angular는 ng-repeat에 대한 전체 DOM 구조를 다시 만들지 않고 대신 배열의 값에 대해 DOM의 일부를 다시 만듭니다.
답변
업데이트 : Angular v1.5에서 track by $index
가 링크를 사용하는 대신 표준 구문으로 사용되어 ng-repeat
듀피 오류가 발생했습니다.
나는 이것을 중첩으로 보았고 ng-repeat
아래는 효과가있었습니다.
<tbody>
<tr ng-repeat="row in data track by $index">
<td ng-repeat="field in headers track by $index">{{row[field.caption] }}</td>
</tr>
답변
다음은 객체에서 $$ hashKey를 쉽게 제거하는 방법입니다.
$scope.myNewObject = JSON.parse(angular.toJson($scope.myObject))
$scope.myObject
-$$ hashKey를 제거 할 때 작업을 수행하려는 객체를 나타냅니다.
$scope.myNewObject
-수정 된 원본 객체를 새 객체에 할당하여 필요에 따라 사용할 수 있도록합니다.