Онс поповер
Кто-нибудь знает, что случилось с попсовым компонентом onsen?
когда я пытаюсь получить доступ к переменной ближайшего определенного контроллера, это не работает. он всегда загружает переменные из корневой области видимости.
ни {{name}}, ни {{option}}, кажется, не решены правильно:
<body ng-controller="AppController">
<ons-navigator var="navigator">
<ons-page ng-controller="PageController">
<ons-template id="popover.html">
<ons-popover cancelable direction="down">
<my-dialog>{{name}}!</my-dialog>
<ons-list>
<ons-list-item ng-repeat="option in options" modifier="tappable">
{{ option }}
</ons-list-item>
</ons-list>
</ons-popover>
</ons-template>
</ons-page>
</ons-navigator>
</body>
http://plnkr.co/edit/w2ZL3dkv62qSYrhhEj5C?p=preview
Вместо загрузки имени, определенного в PageController, он загружает имя, определенное в AppController
1 ответ
Автоответчик
Похоже, что createPopover просто искажен. намеренно или нет, он всегда разрешает переменные с корневой областью видимости. что не здорово
Вот исправление для метода createPopover, чтобы вы могли обработать область видимости. В противном случае область действия всегда является rootScope.
http://plnkr.co/edit/W4GgqLcJHlj724IB2KRG?p=preview
ons.createPopover = function(page, __scope) {
...
ons.compile(popover[0], __scope);
...
}
ons.compile = function(dom, __scope) {
var scope = __scope || angular.element(dom).scope();
Я добавил переменную __scope в createPopover и скомпилировал. и я создаю поповер с областью действия контроллера:
ons.createPopover('popover.html', $scope)
таким образом, для разрешения переменных требуется заданная область. angular.element(дом).scope(); всегда разрешается в корень, потому что всплывающий элемент добавляется к телу в функции createPopover.