2017-06-22 47 views
0

我正在使用ng-repeat進行基於角度1.6的圖像上傳,注意輸入不是多個,但有多個ng重複的輸入,我有圖像預覽工作,以及添加行/刪除行,似乎不工作的唯一的事情是,如果我刪除一個項目的文件輸入不更新(我有代碼,確實更新預覽)。以下是我與合作:在ng-repeat中使用預覽輸入綁定的角度文件上傳

<div ng-repeat="item in data.items track by $index"> 
    <input ng-model="item.fileinput" type="file" name="image_{{$index}}" id="image_{{$index}}" onchange="angular.element(this).scope().imageChoose(this)"/><i ng-click="removeEvent($index)" class="fa fa-trash fa-lg"></i> 
    <img ng-if="!item.thumb" class="preview-image-small" ng-src="/images/general/placeholder.jpg"</img> 
    <img ng-if="item.thumb" class="preview-image-small" ng-src="{{item.thumb}}"</img> 
</div> 

然後在我控制我處理imageChoose如下:

$scope.imageChoose = function (data) { 
var id = data.id.split("_"); 
id = id[id.length-1]; 
var elem = document.getElementById(data.id); 
if (typeof (FileReader) != "undefined") { 
    var reader = new FileReader(); 
    reader.onload = function (e) { 
    $scope.$apply(function() { 
     $scope.data.data.items[id].thumb = e.target.result; 
    }); 
    }; 
    reader.readAsDataURL(elem.files[0]); 
} else { 
    alert("This browser does not support FileReader."); 
} 
}; 

這正確地設置圖像預覽和當我運行他們再行一個刪除順序由於event.thumb的ng-src而正確。問題是實際的文件輸入不綁定或更新,這裏是去除一行代碼:

$scope.removeEvent = function (index) { 
$scope.data.items.splice(index, 1); 
}; 

我希望有綁定的輸入或處理刪除,這樣一個相對簡單的方式輸入保持正確。提前感謝任何想法。

+1

我沒有完全理解你的問題,但是將數據保存在dom對象上並不是真正做到這一點的角度。無論如何,對不起,如果我有點脫離主題,但爲什麼不使用一個模塊已經解決了這些問題,如ng-upload? https://github.com/danialfarid/ng-file-upload –

+0

該庫看起來很乾淨/很好,你知道它是否支持ng-repeat偶然......哦,我的問題是「removeEvent」刪除行爲它應該保持正確的圖像預覽更新,但圖像輸入沒有綁定,並沒有正確更新。 – edencorbin

+1

對ng-repeat沒有把握,但我想不出有什麼理由不能使用它。長期以來一直在使用這個特定的軟件包,到目前爲止我沒有失敗 –

回答