<p class="feedback-row feedback-list-imgs" ng-repeat="item in image_result">
<p class="feedback-list-img" ng-click="changePic(item)">
<!--<img ng-if="item.length" src="{{item}}">-->
<img ng-src="{{item}}" style="width:100%;height:100%;">
<!--<p class="img" style="background: url({{item}});background-size: 100% 100%;"></p>-->
</p>
<p class="img-delete" ng-click="deletePic(item)"><span class="ion-close-circled"></span></p>
</p>
js 调用原生
var data = ['取照片'];
$scope.curPictureIndex = -1;//当前图片索引
SGPlugin.showSelectedView($.proxy(self.onSelectPictureSuccess, self), data);
原生返回
/**
图片选择成功,显示图片并存储
**/
$scope.onSelectPictureSuccess = function(imageData) {
var self = this;
var imageDataTmp;
if (self.SGPlugin.isAndroid()) {
imageDataTmp = "data:image/jpeg;base64," + imageData;
} else {
imageDataTmp = imageData;
}
// 存储、置换该图片
var imageResultArray = $scope.image_result;
imageResultArray = _.isEmpty(imageResultArray) ? new Array() : imageResultArray;
if(self.curPictureIndex != -1){
imageResultArray[self.curPictureIndex] = imageDataTmp;
}
else {
imageResultArray.push(imageDataTmp);
}
$scope.image_result = imageResultArray;
$scope.$apply();
}
不重复的照片显示没有问题 上传重复的照片 有数据 但是不显示 求原因 报错
Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: item in image_result
문제의 원인은 image_result 배열에 있는 객체의 데이터 유형이 문자열이라는 것입니다. ng-repeat는 숫자 또는 숫자와 같은 기본 데이터 유형의 경우 동일한 ID를 가진 두 객체가 존재하는 것을 허용하지 않기 때문입니다. 문자열의 경우 해당 ID는 자체 값입니다. 따라서 두 개의 동일한 숫자가 배열에 허용되지 않습니다. 이 오류를 방지하려면 표현식별로 고유한 트랙을 정의해야 합니다.
해결책:
item.id로 항목 추적 // 비즈니스 목적으로 고유 ID 생성
$index로 항목 추적에 있는 항목 //또는 루프의 인덱스 변수 $index를 직접 사용
또 다른 주의할 점은 객체가 배열에 저장되어 있는 경우:
HTML 코드 조각
으아악자바스크립트 코드
으아악실행 결과:
구체적인 예시는 JSBin을 참고하세요
<p class="feedback-row Feedback-list-imgs" ng-repeat="$index에 의한 image_result 트랙의 항목">
여기에서 이를 변경해 보세요. Angular의 ng-repeat 루프 배열은 배열 내용이 반복되면 오류를 보고합니다
오류 원인은 ng-repeat에 있습니다
기본적으로 ng-repeat 시 각 항목은 고유해야 합니다. 중복된 데이터가 있으므로 이러한 오류 메시지가 보고됩니다.
오류 메시지에 이미 해결 방법이 나와 있습니다.
추적을 사용하세요. 으아악