2013-09-24 17 views
8

Mi accorgo di alcune stranezze con lo scope modale ui-bootstrap. Sembra che quando si utilizza ng-model al suo interno, si debba fare riferimento a $ parent per ottenere l'ambito del controller modale. Notate nel mio plunker che le altre proprietà come ng-options non richiedono $ parent: http://plnkr.co/edit/xGSHz4EkZvGr2D6CUeBz?p=previewbug di ambito modale ui-bootstrap

Qualche idea sul perché? Ho trovato un problema simile qui: Scope issues with Angular UI modal

Questo mi ha portato a provare il cambio $ parent ma non riesco a commentare su quel thread perché non ho abbastanza reputazione.

Qualche idea sul perché l'oscilloscopio sembra cambiare?

Grazie!

risposta

14

Il modale ha il proprio ambito (non ho mai utilizzato l'interfaccia utente angolare, ma è l'unica cosa che può accadere) e quando si imposta "selectedLocation" la proprietà viene impostata sull'ambito della modal e non sul proprio ambito del controllore. Il genitore $ lo sta forzando ad avere l'ambito del tuo controller, ma non è una buona soluzione perché ti chiuderai in una certa struttura, sempre partendo dal presupposto che il genitore della modale abbia il "modello".

Ecco un Plunker modificata utilizzando un oggetto del modello sul proprio nell'ambito del controllore (usando model.selectedLocation) http://plnkr.co/edit/B5kZaIA5xi2RediUTBK7?p=preview

In ogni modo, se si mette la vostra proprietà su qualcosa come "$ scope.model.selectedLocation" che cambia il comportamento . Ora, quando faccio riferimento a "model.selectedLocation" sul modale, l'ambito della modale non ha un oggetto modello, quindi Angular sale alla catena dell'ambito dell'ambito del controllore (che ha un oggetto modello).

Guarda questo video di John Lindquist, penso che possa spiegarlo molto meglio di me. :-) http://egghead.io/lessons/angularjs-the-dot