Saya baru di bidang sudut. Saya mencoba membaca jalur file yang diunggah dari bidang 'file' HTML setiap kali 'perubahan' terjadi di bidang ini. Jika saya menggunakan 'onChange' itu berfungsi tetapi ketika saya menggunakannya dengan cara sudut menggunakan 'ng-ubah' itu tidak berfungsi.
<script>
var DemoModule = angular.module("Demo",[]);
DemoModule .controller("form-cntlr",function($scope){
$scope.selectFile = function()
{
$("#file").click();
}
$scope.fileNameChaged = function()
{
alert("select file");
}
});
</script>
<div ng-controller="form-cntlr">
<form>
<button ng-click="selectFile()">Upload Your File</button>
<input type="file" style="display:none"
id="file" name='file' ng-Change="fileNameChaged()"/>
</form>
</div>
fileNameChaged () tidak pernah menelepon. Firebug juga tidak menunjukkan kesalahan.
Jawaban:
Tidak ada dukungan yang mengikat untuk kontrol Unggah File
https://github.com/angular/angular.js/issues/1375
dari pada
dapatkah kamu mencoba
dan dalam fungsi Anda berubah bukannya
dapatkah kamu mencoba
Di bawah ini adalah salah satu contoh pengunggahan file dengan unggahan file drag drop semoga bermanfaat http://jsfiddle.net/danielzen/utp7j/
Informasi Upload File Sudut
URL untuk Upload File AngularJS di ASP.Net
http://cgeers.com/2013/05/03/angularjs-file-upload/
Unggahan multi-file asli AngularJs dengan kemajuan dengan NodeJS
http://jasonturim.wordpress.com/2013/09/12/angularjs-native-multi-file-upload-with-progress/
ngUpload - Layanan AngularJS untuk mengunggah file menggunakan iframe
http://ngmodules.org/modules/ngUpload
sumber
sqren
solusinya ... ... ... @ 0MV1Saya membuat arahan kecil untuk mendengarkan perubahan input file.
Lihat JSFiddle
view.html:
controller.js:
directive.js:
sumber
Ini adalah penyempurnaan dari beberapa yang lain di sekitar, data akan berakhir dalam model-ng, yang biasanya apa yang Anda inginkan.
Markup (cukup buat file data atribut sehingga direktif dapat menemukannya)
JS
sumber
$scope.$apply();
wajib?ng-change
Acara saya sepertinya masih menyala tanpa itu.Cara bersih adalah menulis arahan Anda sendiri untuk mengikat "perubahan" acara. Hanya untuk memberi tahu Anda bahwa IE9 tidak mendukung FormData sehingga Anda tidak dapat benar-benar mendapatkan objek file dari acara perubahan.
Anda dapat menggunakan perpustakaan ng-file-upload yang sudah mendukung IE dengan FileAPI polyfill dan menyederhanakan posting file ke server. Ini menggunakan arahan untuk mencapai ini.
JS:
sumber
Saya telah memperluas ide @Stuart Axon untuk menambahkan penjilidan dua arah untuk input file (yaitu mengizinkan pengaturan ulang input dengan mengatur ulang nilai model kembali ke nol):
Demo
sumber
data-ng-click="vm.theFile=''"
berfungsi dengan baik, tidak perlu menulisnya ke metode pengontrolMirip dengan beberapa jawaban baik lainnya di sini, saya menulis arahan untuk menyelesaikan masalah ini, tetapi implementasi ini lebih dekat mencerminkan cara sudut melampirkan peristiwa.
Anda dapat menggunakan arahan seperti ini:
HTML
Seperti yang Anda lihat, Anda dapat menyuntikkan file yang dipilih ke pengatur acara Anda, karena Anda akan menyuntikkan objek $ event ke pengatur acara apa pun.
Javascript
sumber
fileChange
ekspresi? Saya menggunakan arahan ini di dalamng-repeat
dan$scope
variabel yang diteruskan keattrHandler
adalah sama untuk setiap catatan. Apa solusi terbaik?Arahan ini meneruskan file yang dipilih juga:
HTML, bagaimana menggunakannya:
Di controller saya:
sumber
Saya merekomendasikan untuk membuat arahan
arahan ini dapat digunakan berkali-kali, ia menggunakan ruang lingkupnya sendiri dan tidak bergantung pada ruang lingkup orang tua. Anda juga dapat memberikan beberapa params ke fungsi penangan. Fungsi handler akan dipanggil dengan objek lingkup, yang aktif ketika Anda mengubah input. $ apply perbarui model Anda setiap kali acara perubahan dipanggil
sumber
Versi jqLite Angular paling sederhana.
JS:
HTML:
sumber
Demo Demo "input-file" yang Bekerja dengan
ng-change
1Untuk membuat suatu
<input type=file>
elemen bekerja dengan direktif perubahan-ng , diperlukan perintah kustom yang bekerja dengan direktif model-ng .DEMO
sumber
Solusi yang terlalu lengkap berdasarkan:
Cara sederhana untuk menyembunyikan bidang input dan menggantinya dengan gambar, di sini setelah solusi, yang juga memerlukan peretasan pada sudut tetapi yang melakukan pekerjaan [TriggerEvent tidak bekerja seperti yang diharapkan]
Solusinya:
Ketika gambar diklik, simulasikan tindakan DOM 'klik' pada bidang input. Dan lagi!
sumber
Saya telah melakukannya seperti ini;
sumber
Cara lain yang menarik untuk mendengarkan perubahan input file adalah dengan mengawasi atribut ng-model dari file input. Tentu saja FileModel adalah arahan khusus.
Seperti ini:
HTML ->
<input type="file" file-model="change.fnEvidence">
Kode JS ->
Semoga bisa membantu seseorang.
sumber
Elemen sudut (seperti elemen root dari direktif) adalah objek jQuery [Lite]. Ini berarti kami dapat mendaftarkan pendengar acara seperti:
Ini adalah delegasi acara jQuery. Di sini, pendengar dilampirkan ke elemen root dari direktif. Ketika acara dipicu, itu akan muncul ke elemen terdaftar dan jQuery akan menentukan apakah acara tersebut berasal dari elemen dalam yang cocok dengan pemilih yang ditentukan. Jika ya, pawang akan menembak.
Manfaat dari metode ini adalah:
ng-if
ataung-switch
)http://api.jquery.com/on/
sumber
Anda cukup menambahkan kode di bawah ini dalam pertukaran dan itu akan mendeteksi perubahan. Anda dapat menulis fungsi pada klik X atau sesuatu untuk menghapus data file ..
sumber