2017-02-09 17 views
0

聚合物1.0lazyRegister:max可能是嵌套元素还是铁网页?

是否有可能与lazyRegister: max:在父my-app元件

1)嵌套元素?

2)铁元素中的嵌套元素?

我有console.log元素single-listing中的声明,当attached运行时会触发......它在应用程序加载时立即执行。所以,lazyRegister不适合我。

<script> 
    // Setup Polymer options 
    window.Polymer = { 
    dom: 'shadow', 
    lazyRegister: 'max' 
    }; 

... 
<my-app></my-app> 

我-app.html:

<!-- Main content --> 
    <iron-pages attr-for-selected="data-route" selected="{{route}}"> 
     <user-login data-route="user-login"></user-login> 
     <my-view1 data-route="my-view1" form-loading="{{isLoading}}" 
     listings="[[listings]]" tabindex="-1"></my-view1> 
     <single-listing data-route="single-listing"></single-listing> 
     <my-view3 data-route="my-view3"></my-view3> 
    </iron-pages> 

单listing.html:

attached: function() { 
    this.async(()=> { 
     console.log('foo') }) 
    } 

回答

2

是否有可能lazyRegister: max与嵌套元素[ ...]?

是的,这是可能的,可以在这个Plunker中看到。

Plunker注:有注册x-el前Plunker的延迟,所以等待几秒钟检查控制台,它应该显示x-el attached之前出现的 “Hello world” 后:

screenshot

lazyRegister对我不起作用

我想你可能会误会理解该国旗的目的,以及何时注册。该标志延迟元素注册,直到元素被创建。您可以声明式地创建元素(即通过在HTML中编写“​​”)或命令性地(即,在JavaScript中使用document.create('lazy-element');)。

在您的示例中,您声明了可有效创建该元素的元素,以便在元素的主机创建时进行注册。在以下示例代码片段中,当创建<my-app>时会创建​​,这是在导入<my-app>的定义时。

<!-- my-app.html --> 
<my-app> 
    <iron-pages> 
    <lazy-element></lazy-element> 
    </iron-pages> 
</my-app> 

如果你想,直到页面中选择推迟元素的创作,你可以延迟加载使用下列方法之一元素的导入(和删除lazyRegister标志,因为它是多余的):

+0

在我的情况下,为什么'console.log('foo')'运行时我没有点击iron-page selection''?由于'lazyRegister:max'不应该被注册,直到我点击iron-page选项? – dman

+0

@dman更新回答与解释 – tony19

+0

'推迟元素注册,直到元素被创建.' ...这不会是默认行为,因为元素必须首先创建吗?否则,它不能注册一个不存在的元素。 – dman