Ich versuche, diese [tutorial] zu folgen, aber kann es nicht funktionieren.Angular File Upload Richtlinie nicht Controller-Modell
Mein Angular Controller protokolliert undefined
für ein Modell, das in meiner Direktive erstellt wurde. Hier ist ein [JSFiddle] davon arbeiten erstellt mein Autor des Tutorials.
Das Problem ist die Ansicht kann $scope.myFile
finden und aber Controller nicht ($scope.myFile
ist undefined
).
Die Ansicht zeigt {{ myFile.name }}
an (als Beispiel my-image.jpg
). Die Variable myFile
ist ein JS-Objekt, das Daten zur ausgewählten Datei enthält. Das funktioniert gut. Die Direktive scheint dem Modell den Wert der ausgewählten Datei zuzuordnen (und zeigt sie somit korrekt in der Ansicht an).
<input file-model="myFile" type="file"/ >
<div class="label label-info">
{{ myFile.name }}
</div>
<button ng-click="uploadDocs()">Click</button>
Hier ist die Direktive, die ich von dieser [tutorial] bekommen habe.
Da file
Eingangstyp nicht ng-model
verwenden kann, setzt diese Richtlinie das Modell mit einem file
Eingang zugeordnet werden, change
Ereignis einer Datei jedes Mal Feuer zuweisen.
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]);
}
});
});
}
};
}
]).
Im Controller ich log $scope.myFile
gerade. Dies wird von der Schaltfläche im obigen HTML aufgerufen. Im Idealfall würde ich die Dateien hier auf den Server hochladen, aber ich kann nicht, weil $scope.myFile
nicht definiert ist.
$scope.uploadDocs = function() {
var file = $scope.myFile;
console.log($scope.myFile);
};
Kann mir jemand sagen, warum die Ansicht $scope.myFile
recieving sein würde, aber das Controller-Protokoll undefined
für $scope.myFile
?
versuchen Sie, meine Datei als erste Zeile Ihres Controllers zu initialisieren: '$ scope.myFile = {}; 'Es ist vor allem das Punktproblem – harishr
Ich habe Plunkr des von Ihnen bereitgestellten Codes gemacht und es funktioniert gut: http://plnkr.co/edit/o9D2Q6Tzkesm5MTyqXFE?p=preview – EvAlex
Erfahren Sie dieses Problem heute. Passing 'myFile' in die 'uploadDocs()' -Funktion wie diese 'uploadDocs (myfile)', schien es zu tun – Akinwale