Do przesyłania plików używam https://github.com/nervgh/angular-file-upload.Przesyłanie plików AngularJS wysyła nieaktualne dane formularza
Mam formularz, który oprócz przesłania pliku, wysyła kilka innych pól. Dla jasności, mogę wysłać tylko jedno pole w tym przykładzie:
$scope.save_with_upload = function(user) {
$scope.uploader.formData = [{
name: user.name,
}];
$scope.uploader.uploadAll();
}
Powiedzmy wartość wejścia name
jest Test 1.
- Kiedy po raz pierwszy załadować stronę i kliknij Zapisz, wysyła plik, ale nie wysyła
formData
w ogóle. - Następnie zmieniam pole
name
na Test 2 i naciśnij Zapisz. Wysyła plik iformData
, , ale ma wartośćname
, którą wysyła: Test 1. - Następnie zmieniam pole
name
na Test 3 i naciśnij Zapisz. Wysyła plik iformData
, , ale ma wartośćname
, którą wysyła: Test 2. - ... i tak dalej ...
Wygląda więc na to, aby zawsze wysłać dane, które zostały przypisane do formData
przed ostatnie wezwanie do uploadAll
.
Aby wyjaśnić: jeśli wykonam dir(user, $scope.uploader.formData)
tuż przed wywołaniem uploadAll
, to pokazuje poprawne aktualne wartości w obu.
Zmagam się z tym przez kilka godzin i po prostu nie mogę zobaczyć, co jest nie tak. Jakieś pomysły?
do czego służy to wywołanie zwrotne? Próbowałem go w kontrolerze i nie działał. Czy możesz po prostu rzucić to w widoku? – bischoffingston
Również dlaczego nie możesz "item.formData.push (formData)"? – bischoffingston
@bischoffingston Ten kod musi się znaleźć w kontrolerze. 'uploader' musi być instancją' FileUpload'. 'item.formData.push (formData)' oraz 'Array.prototype.push.apply (item.formData, formData)' są równoważne. –