Онс поповер

Кто-нибудь знает, что случилось с попсовым компонентом 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.

Другие вопросы по тегам