如何在 `<my-view#>` 处于活动状态(即进入视野)时触发事件?
How to fire an event whenever `<my-view#>` is active (i.e. comes into view)?
以 Polymer Starter Kit 为例,我想在 <my-app>
中有不同的 <app-toolbar>
(使用 属性 headerType
)基于不同的 <my-view#>
,即
<my-view1> => headerType = 'my-view1-header'
<my-view2> => headerType = 'my-view2-header'
在我的 <my-app>
中,我创建了一个 属性 headerType
并使用 <dom-if>
到 show/hide 不同的 <app-toolbar>
.
我的问题是,当 <my-view#>
处于活动状态(即进入视野)时,我如何始终向 <my-app>
触发事件并设置 headerType = my-view#-header
。
我已经尝试过 polymer 生命周期,例如 ready()
、attached()
等,我知道它们只会在 dom 相关事件期间触发。
Polymer shop 模板中有一些示例,您可以在视图的可见性随 iron-pages
发生变化时执行某些操作。
你只需要添加一个 属性 例如在你的每个布尔类型的视图元素中可见并观察 属性 来检查视图是否可见,然后在你的iron-pages
你需要添加 selected-attribute 属性 并且该值是可见的。检查 Polymer Shop Template.
我最终使用 _pageChanged
观察器调用 <my-view#>
上的函数。以下是代码片段。
_pageChanged: function(page) {
let onLoad = function () {
let selected = this.$.ironpages.children[page];
if (Object.getPrototypeOf(selected).hasOwnProperty('viewSelected')) {
selected.viewSelected();
}
}
// Load page import on demand. Show 404 page if fails
var resolvedPageUrl = this.resolveUrl('my-' + page + '.html');
this.importHref(resolvedPageUrl, onLoad, this._showPage404, true);
},
以 Polymer Starter Kit 为例,我想在 <my-app>
中有不同的 <app-toolbar>
(使用 属性 headerType
)基于不同的 <my-view#>
,即
<my-view1> => headerType = 'my-view1-header'
<my-view2> => headerType = 'my-view2-header'
在我的 <my-app>
中,我创建了一个 属性 headerType
并使用 <dom-if>
到 show/hide 不同的 <app-toolbar>
.
我的问题是,当 <my-view#>
处于活动状态(即进入视野)时,我如何始终向 <my-app>
触发事件并设置 headerType = my-view#-header
。
我已经尝试过 polymer 生命周期,例如 ready()
、attached()
等,我知道它们只会在 dom 相关事件期间触发。
Polymer shop 模板中有一些示例,您可以在视图的可见性随 iron-pages
发生变化时执行某些操作。
你只需要添加一个 属性 例如在你的每个布尔类型的视图元素中可见并观察 属性 来检查视图是否可见,然后在你的iron-pages
你需要添加 selected-attribute 属性 并且该值是可见的。检查 Polymer Shop Template.
我最终使用 _pageChanged
观察器调用 <my-view#>
上的函数。以下是代码片段。
_pageChanged: function(page) {
let onLoad = function () {
let selected = this.$.ironpages.children[page];
if (Object.getPrototypeOf(selected).hasOwnProperty('viewSelected')) {
selected.viewSelected();
}
}
// Load page import on demand. Show 404 page if fails
var resolvedPageUrl = this.resolveUrl('my-' + page + '.html');
this.importHref(resolvedPageUrl, onLoad, this._showPage404, true);
},