ng-include внутри ng-controller работает неправильно

У меня есть html-файл с ng-includes внутри

<div ng-controller="MapMenuCtrl">
    <div class="mapMenu row">
        <ng-include src="'partials/mapMenu/filterDropdown.html'"></ng-include>
        <ng-include src="'partials/mapMenu/alertDropdown.html'"></ng-include>
        <ng-include src="'partials/mapMenu/investigationDropdown.html'"></ng-include>
    </div>
</div>

Проблема в том, что мне нужен MapMenuCtrl для каждого из ng-include. Но когда он установлен как в примере, он работает, но только наполовину. Например, в одном из этих файлов я использую ng-модель для одной из переменных $scope MapMenuCtrl, и она не привязывается. Я пытался установить контроллер для каждого из ng-include, но он загружается 3 раза, хотя мне нужно только 1. Надеюсь, вы меня поняли. Я знаю, что мой английский довольно плохой


person Kate Lizogubova    schedule 19.06.2014    source источник


Ответы (1)


ng-include создает новую область. Поместите объект в область действия контроллера и поместите все привязываемые вещи внутрь. Например, вы можете назвать это моделью. Тогда привязки должны работать как положено.

Я считаю, что вот ссылка на подробности проблемы, с которой вы столкнулись: dot-to-avoid-child-scope-problems">Действительно ли моя ng-модель должна иметь точку, чтобы избежать проблем с дочерними $scope?

person stride    schedule 19.06.2014
comment
Спасибо :) Возможно, вы знаете, что внутри ng-include есть выпадающий список с прокручиваемым списком. Когда он находится вне ng-include, он отлично работает, но когда я добавляю его внутри ng-include (я не менял ни одной строки), мой раскрывающийся список становится длиннее, а полоса прокрутки исчезает. - person Kate Lizogubova; 19.06.2014
comment
Я ожидаю, что это будет точно такая же проблема, как указано выше. То, как вы привязываете выбор, относится к области, введенной ng-include, а не к родительской области, которая имеет правильные данные. Убедитесь, что каждая часть выбора в привязках и выражениях имеет расширение . поэтому он запрашивает область действия перед установкой значений. - person stride; 19.06.2014
comment
Я нашел, в чем была проблема. Я установил максимальную высоту раскрывающегося списка с помощью jQuery, и этот код был в моем MapMenuCtrl, поэтому он не срабатывал при первой загрузке Ctrl. - person Kate Lizogubova; 19.06.2014