<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
ringa_lee2017-04-18 09:57:37
問題原因是image_result 數組中物件的資料類型是字串,因為ng-repeat 不允許集合中存在兩個相同id 的物件,對於數字或字串等基本資料類型來說,它的id 就是它自身的值。因此數組中是不允許存在兩個相同的數字的。為了規避這個錯誤,需要定義自己的 track by表達式。
解決方案:
item in items track by item.id // 業務上自己產生唯一的id
item in items track by $index //或直接拿循環的索引變數$index來用
另外要注意的是,如果數組中是存放物件:
HTML 程式碼片段
<body ng-app="exeApp">
<ul ng-controller="MainCtrl">
<li ng-repeat="user in users">
{{user.name}}
</li>
</ul>
</body>
JavaScript 程式碼
angular.module('exeApp', []).
controller('MainCtrl', ['$scope',
function($scope) {
$scope.users = [
{name: 'fer'},
{name: 'fer'}
]
}]);
運行結果:
具體範例,請參考JSBin
黄舟2017-04-18 09:57:37
報錯的原因是在ng-repeat
預設在ng-repeat的時候每一個item都要保證是唯一的,因為你有重複的數據,所以會報出這樣的錯誤訊息
報錯訊息已經告訴你解決方案了 使用track by
ng-repeat="item in items track by $index"