Sto usando questo controllo: http://blueimp.github.io/jQuery-File-Upload/angularjs.html per caricare file in modo angolare, una volta che il file è stato caricato sul mio server, restituisco un URL e vorrei visualizzarlo al client sul callback di successo. Il plugin in uso è solo un normale caricamento di file jquery, ma è disponibile un wrapper direttiva angolare che sto usando.
Ecco come lo definisco il callback:
$scope.options = {
url: '/api/Client/',
type: 'PUT',
done: function (event, data) {
var scope = angular.element(this).scope();
scope.test = "doesn't work";
scope.$apply(function() {
scope.test = "this doesn't work either";
});
}
};
Il file carica bene, e la funzione di fatto si chiama però non sono in grado di aggiornare la vista. Inizialmente ho provato cambiando scope, poi ho capito che avrei richiesto la funzione $ apply() ma non funzionava neanche.
Ho anche provato
$scope.options = {
url: '/api/Client/',
type: 'PUT',
done: function (event, data) {
$scope.test = "doesn't work";
$scope.$apply(function() {
$scope.test = "this doesn't work either";
});
}
};
e che anche non funziona. Non sono sicuro del motivo per cui non sta aggiornando la mia vista, e poiché la chiamata conclusa è solo un evento di successo ajax, non vedo come questo specifico plugin possa causare problemi con $ scope. $ Apply. Sto usando AngularJs 1.1.5, ma ho anche provato 1.0.7 e sto ottenendo lo stesso problema.
Quando si chiama apply si ottiene un errore che l'applicazione/digest è già in corso? –
No, nessun errore. Semplicemente non fa niente. Se lo chiamo più volte e guardo il valore di $ scope.test, vedo il valore impostato in precedenza. La vista non si aggiorna con quel valore –
La seconda versione sembra davvero che dovrebbe funzionare per me, se viene richiamata la funzione done. –