2013-09-24 20 views
8

Zauważam jakąś dziwność z zakresu modalności ui-bootstrap. Wydaje się, że przy korzystaniu z modelu ng należy odwołać się do $ parent, aby uzyskać zasięg kontrolera modalnego. Zawiadomienie w moim plunker, że inne właściwości takie opcje-ng nie wymagają $ rodzic: http://plnkr.co/edit/xGSHz4EkZvGr2D6CUeBz?p=previewUi-bootstrap błąd modalny zakres

Każdy pomysł, dlaczego? Znalazłem podobny problem tutaj: Scope issues with Angular UI modal

To skłoniło mnie do wypróbowania zmiany $ parent, ale nie jestem w stanie skomentować tego wątku, ponieważ nie mam wystarczającej reputacji.

Każdy pomysł, dlaczego zakres wydaje się zmieniać?

Dzięki!

Odpowiedz

14

Modal ma własny zakres (nigdy nie używałem Angularnego interfejsu użytkownika, ale to jedyna rzecz, która może się wydarzyć) i kiedy ustawiasz "selectedLocation", właściwość ustawia się na zasięgu modalu, a nie na twoim zakres kontrolera. $ Parent zmusza go do uzyskania zasięgu kontrolera, ale to nie jest dobre rozwiązanie, ponieważ będziesz blokował twoje ja w pewną strukturę, zawsze zakładając, że rodzic modalu ma "model".

Oto zmodyfikowana Plunker pomocą obiektu modelu na zakres regulatora (za pomocą model.selectedLocation) http://plnkr.co/edit/B5kZaIA5xi2RediUTBK7?p=preview

Tak czy inaczej, jeśli umieścić swoją nieruchomość na coś takiego „$ scope.model.selectedLocation”, który zmienia zachowanie . Teraz, gdy odwołuję się do "model.selectedLocation" na modalu, zasięg modalu nie ma obiektu modelu, więc Angular idzie w górę łańcucha zasięgu do zakresu kontrolera (który ma obiekt modelu).

Obejrzyj ten film od Johna Lindquista, myślę, że może to wyjaśnić znacznie lepiej niż ja. :-) http://egghead.io/lessons/angularjs-the-dot