Vorrei impostare una promessa e poi lanciarla in una direttiva (usando il tipo di attributo databinding '=') e fare la magia then
all'interno della direttiva, ma passando la promessa come attributo sembra portare a una promessa risolta come undefined
, pertanto lo then
(e qualsiasi altra funzionalità promessa) non è disponibile.Come passare promesse come attributi direttiva in Angular
risposta
ho il sospetto questo è dovuto a questo specifico Tweak:
promesse $ q sono riconosciuti dal motore di template in angolare, il che significa che nei modelli è possibile trattare le promesse collegate a un ambito come se fossero la valori risultanti - angular $q docs
e questo si traduce essenzialmente nella promessa di essere convertiti all'interno del modello per il valore $$v
che la promessa utilizza per memorizzare il valore risultante, e nella fase di linking questo è probabile che sia ancora da definire - il valore convertito (cioè non definito), non la promessa stessa viene quindi passata nella direttiva.
La soluzione alternativa consiste nel non utilizzare la promessa stessa come attributo passato alla direttiva, ma per renderlo parte di un oggetto padre: l'oggetto padre non avrà la corsa del motore $ q/template, e così tu " Sarai in grado di approfondire la promessa del genitore e di accedere alla funzionalità then
da lì.
Vedi http://jsfiddle.net/cebjyre/95sjT/ per esempio - linea decommentando 32 causerà un guasto dovuto la promessa di primo livello più effettivamente essere una promessa a quel punto, mentre la seconda promessa livello sulla linea 17 funziona bene
Grazie. Ho aggiunto questo a documenti angolari.
http://docs.angularjs.org/api/#comment-984109158
Per raggiungere questo obiettivo avvolgere la vostra promessa nel genitore: $ scope.myDirectiveAtrribute = {promessa: deferred.promise} e poi nel l'accesso direttiva la promessa
$ portata. myDirectiveAtrribute.promise.then (function() {});
Grazie per la condivisione. La tua soluzione sta funzionando! – ValeriiVasin
Ho anche usato questa strategia usando i componenti Angular 1.5. Ho usato angular.element (document) .ready() e poi ho avuto accesso alla promessa dal callback pronto. Probabilmente un caso d'uso per restare con le direttive invece dei componenti, ma funziona. – mbokil
- 1. Promesse Angular 2 e TypeScript
- 2. Come passare i parametri in angular-translate
- 3. Come posso passare più attributi in una direttiva di attributo Angular.js?
- 4. Come disabilitare dinamicamente la direttiva ui-sortable in angular-ui
- 5. Direttiva di formattazione del denaro in Angular
- 6. Come passare HTML alla direttiva angolare?
- 7. Come impostare gli attributi nella direttiva angularjs limitato ai commenti
- 8. Come si valutano i valori degli attributi in una direttiva?
- 9. Come aggiungere attributi di convalida in una direttiva angularjs
- 10. Come formattare la direttiva 'angular-moment' am-time-fa '?
- 11. come passare $ scope a angularjs 1.5 componente/direttiva
- 12. Come passare il parametro per funzionare in AngularJS con le promesse
- 13. Passare un oggetto come attributo alla direttiva compilata al volo
- 14. Angular 2.0 - conversione del concatenamento di promesse agli oggetti osservabili
- 15. Direttive AngularJs - come ottenere i valori degli attributi dalla direttiva
- 16. Attributi dell'ambito della direttiva senza ambito isolato in AngularJS
- 17. Angular 2, come usare setTimeout?
- 18. È possibile passare 'required' in una direttiva AngularJS?
- 19. Passare il parametro a Angular ng-include
- 20. Una direttiva dovrebbe parlare con un controller in Angular JS?
- 21. Angularjs: come passare variabili di ambito a una direttiva?
- 22. Angular 2: come passare i parametri del percorso a subroute?
- 23. Come passare $ q alla funzione di collegamento direttiva angolare?
- 24. Devo utilizzare un singolo oggetto o singoli valori come attributi in una direttiva Angolare?
- 25. Controllo dell'ordine di valutazione direttiva in Angular 2
- 26. Come far funzionare le promesse in IE11
- 27. Come utilizzare MongoDB con promesse in Node.js?
- 28. Aggiunta di attributi personalizzati alla direttiva della pagina in asp.net
- 29. Posso passare templateUrl alla direttiva - AngularJS
- 30. attributi duplicati quando si utilizza direttiva compilato con transclude
Grazie. Questo dovrebbe essere selezionato come risposta corretta – manikanta
Grazie per quella risposta utile. Questa è una brutta verruche su Angular però: gestisce il binding alle promesse in modo trasparente direttamente nella vista, ma non nei modelli. Così ora, anche se vuoi passare dati dritti, devi avvolgerlo in una promessa e un oggetto wrapper. E ora il mio modello di direttiva è pieno di bruttezza come '{{itemList.promise [indice]}}'. La direttiva non è semplicemente perfetta come vorrei. –
da 1,2 promesse angolari non sono più riconosciuti dal motore dei modelli –