我試圖關注此[tutorial],但無法使其工作。Angular File Upload指令不更新控制器型號
我的角度控制器正在爲我的指令中創建的模型記錄undefined
。 這是一個[JSFiddle]它的工作創建了我的教程的作者。
問題是查看可以找到$scope.myFile
但是控制器沒有($scope.myFile
是undefined
)。
該視圖顯示{{ myFile.name }}
(僅舉例my-image.jpg
)。 myFile
變量是一個包含所選文件數據的JS對象。這工作正常。該指令似乎是將所選文件的值分配給模型(並因此在視圖中正確顯示)。
<input file-model="myFile" type="file"/ >
<div class="label label-info">
{{ myFile.name }}
</div>
<button ng-click="uploadDocs()">Click</button>
這是我從這[tutorial]得到的指令。
由於輸入型file
不能使用ng-model
,該指令設置要與file
輸入相關的模型,每次分配給它的文件火災change
事件。
directive('fileModel', [
'$parse',
function ($parse) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function(){
scope.$apply(function(){
if (element[0].files.length > 1) {
modelSetter(scope, element[0].files);
}
else {
modelSetter(scope, element[0].files[0]);
}
});
});
}
};
}
]).
在控制器我只要登錄$scope.myFile
。這是從上面HTML中的按鈕調用的。 理想情況下,我會在這裏上傳文件到服務器,但我不能,因爲$scope.myFile
是未定義的。
$scope.uploadDocs = function() {
var file = $scope.myFile;
console.log($scope.myFile);
};
有人能告訴我爲什麼認爲是recieving $scope.myFile
但控制器日誌undefined
爲$scope.myFile
?
嘗試初始化我的文件作爲您的控制器的第一行:'$ scope.myFile = {};'這主要是點問題 – harishr 2014-11-24 06:02:36
我已經制作了你提供的代碼plunkr,它工作正常:http://plnkr.co/edit/o9D2Q6Tzkesm5MTyqXFE?p=preview – EvAlex 2014-11-24 06:09:58
今天經歷了這個問題。像'uploadDocs(myfile)'這樣的將'myFile'傳遞到'uploadDocs()'函數似乎是這樣做的 – Akinwale 2016-08-21 15:29:35