温泉弹出范围问题

onsen popover scope issue

有人知道温泉的弹出组件是怎么回事吗?

当我尝试访问定义的最近控制器的变量时,它不起作用。它总是从根范围加载变量。

{{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 中定义的名称

自动接听。

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();

我在 createPopover 中添加了 __scope 变量并编译。我用控制器的范围创建弹出窗口:

ons.createPopover('popover.html', $scope)

通过这种方式,它使用给定范围来解析变量。 angular.element(dom).scope();始终解析为 root,因为弹出元素附加到 createPopover 函数的主体。