Sto sviluppando una dashboard con widget ordinabili, agganciabili e mobili. Uno dei controlli che sto utilizzando genera i widget mobili come HTML nella parte inferiore del DOM, prima del tag di chiusura body
. Ciò rimuove efficacemente le azioni eseguite nei controlli finestra dall'ambito del controller in cui sono generate.Come aggiornare manualmente la vista AngularJS usando la sintassi ControllerAs?
Sto sviluppando questo controller dashboard utilizzando la sintassi controllerAs
disponibile, ma non riesco a capire come aggiornare effettivamente la vista con questa sintassi quando un componente esterno esegue un'azione che influisce sui dati per la vista?
Nota: questo non è l'unico problema che mi spinge ad aggiornare manualmente la vista principale. Ci sono anche direttive altrove nella pagina che eseguono azioni che hanno un impatto sulla vista.
Idealmente, non avrei mai dovuto aggiornare la vista manualmente, perché avrei usato tutti i comandi che si verificano all'interno dei comandi Angular incorporati che influenzano il ciclo di digest, ma questa non era un'opzione per me.
Quindi ... se stavo usando $scope
sarei in grado di fare semplicemente:
$scope.$digest
O
$scope.$apply
Ma come faccio a ottenere lo stesso effetto utilizzando controllore come?
var vm = this;
vm.array = [item, item];
vm.something = something;
//External something changes something on a vm.variable
vm.update! //How??
Usando 'var vm = this; 'e quindi' vm. $ digest(); 'provoca un errore:' L'oggetto non supporta la proprietà o il metodo '$ digest''. – Blunderfest
Penso che sia necessario usare '$ scope. $ Digest()' o '$ scope. $ Apply()' in questo caso. Dai un'occhiata a [questo articolo] (http://www.johnpapa.net/do-you-like-your-angular-controllers-with-or-withwith-sugar/) dove spiega l'iniezione '$ scope' – pasine
Ho letto questo articolo prima e penso che menzioni specificamente l'iniezione di $ scope in riferimento a orologi o trasmissioni, il che mi fa pensare che ci possa essere un modo per applicare gli aggiornamenti senza scopo. Ci dovrebbe essere comunque. – Blunderfest