ios - ionic 中使用 cordova camera 插件 上传重复图片 不显示
ringa_lee
ringa_lee 2017-04-18 09:55:37
0
3
510
<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_lee
ringa_lee

ringa_lee

membalas semua(3)
左手右手慢动作

Punca masalah ialah jenis data objek dalam tatasusunan image_result adalah rentetan, kerana ng-repeat tidak membenarkan dua objek dengan id yang sama wujud dalam koleksi untuk jenis data asas seperti nombor atau rentetan, idnya ialah nilainya sendiri. Oleh itu, dua nombor yang sama tidak dibenarkan wujud dalam tatasusunan. Untuk mengelakkan ralat ini, anda perlu menentukan trek anda sendiri dengan ungkapan.

Penyelesaian:

  • item dalam trek item mengikut item.id // Jana id unik untuk tujuan perniagaan

  • item dalam trek item mengikut $index //Atau terus gunakan pembolehubah indeks gelung $index

Perkara lain yang perlu diberi perhatian ialah jika objek disimpan dalam tatasusunan:

coretan kod HTML

<body ng-app="exeApp">
 <ul ng-controller="MainCtrl">
   <li ng-repeat="user in users">
     {{user.name}}
   </li>
 </ul>
</body>

Kod JavaScript

angular.module('exeApp', []).
    controller('MainCtrl', ['$scope', 
       function($scope) {
        $scope.users = [
          {name: 'fer'},
          {name: 'fer'}
        ]
}]);

Hasil jalankan:

Untuk contoh khusus, sila rujuk JSBin

巴扎黑

<p class="feedback-row feedback-list-imgs" ng-repeat="item in image_result track by $index">

Cuba tukar ini di sini tatasusunan gelung ng-repeat Angular akan melaporkan ralat jika kandungan tatasusunan diulang

黄舟

Sebab ralat adalah dalam ng-repeat

Secara lalai, setiap item mestilah unik semasa ng-repeat Kerana anda mempunyai data pendua, mesej ralat sedemikian akan dilaporkan

Mesej ralat telah memberitahu anda penyelesaiannya

ng-repeat="item in items track by $index"
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan