温泉弹出范围问题
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 函数的主体。
有人知道温泉的弹出组件是怎么回事吗?
当我尝试访问定义的最近控制器的变量时,它不起作用。它总是从根范围加载变量。
{{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 函数的主体。