2013-09-24 2 views
8

Я замечаю какую-то странность с модным диапазоном ui-bootstrap. Похоже, что при использовании в нем ng-модели вам нужно ссылаться на $ parent, чтобы перейти в область модального контроллера. Обратите внимание на мой плункер, что другие свойства, такие как ng-options, не требуют $ parent: http://plnkr.co/edit/xGSHz4EkZvGr2D6CUeBz?p=previewui-bootstrap modal scope bug

Любая идея, почему? Я нашел аналогичную проблему здесь: Scope issues with Angular UI modal

Это привело меня к попытке изменения $ parent, но я не могу прокомментировать эту тему, потому что у меня недостаточно репутации.

Любая идея, почему область видимости изменилась?

Спасибо!

ответ

14

Модаль имеет свой собственный объем (я никогда не использовал Угловой интерфейс, но это единственное, что может произойти), и когда вы устанавливаете «selectedLocation», свойство становится установленным в области модальности, а не в вашем область управления. Родитель $ заставляет его получить область вашего контроллера, но это не очень хорошее решение, потому что вы будете блокировать себя в определенной структуре, всегда полагая, что у родителя модального есть «модель».

Вот модифицированный Plunker с использованием модели объекта на вашем области контроллера (с использованием model.selectedLocation) http://plnkr.co/edit/B5kZaIA5xi2RediUTBK7?p=preview

В любом случае, если вы поставите свою собственность на что-то вроде «$ scope.model.selectedLocation», который изменяет поведение , Теперь, когда я ссылаюсь на «model.selectedLocation» на модальный, область модальности не имеет модельного объекта, поэтому Angular поднимает цепочку областей видимости на область вашего контроллера (у которой есть модельный объект).

Посмотрите это видео от Джона Линдквиста, я думаю, он может объяснить это намного лучше, чем я могу. :-) http://egghead.io/lessons/angularjs-the-dot

Смежные вопросы