2017-02-09 12 views
0

Polymer 1,0lazyRegister: максимально возможно с вложенными элементами или железными страницами?

Можно ли lazyRegister: max с:

1) вложенности элементов в родительском my-app элемента?

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 Примечание: Там есть задержка в Plunker перед регистрацией x-el, поэтому подождите несколько секунд после того, как появится сообщение "Привет мир" перед проверкой консоли, которая должна отображать x-el attached:

screenshot

lazyRegister не работает для меня

Я думаю, вы можете быть misun выискивать цель этого флага и при регистрации. Флаг отменяет регистрацию элемента до тех пор, пока элемент не будет создан. Вы можете создать элемент декларативно (то есть, написав «<lazy-element>» в HTML) или настоятельно (т. Е. document.create('lazy-element'); в JavaScript).

В вашем примере вы объявили элемент, который эффективно его создает, поэтому регистрация происходит, когда создается узел элемента. В следующем примере snippet, <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')' работает, когда я не нажал на страницу железной страницы '<единственная страница>'? Из-за 'lazyRegister: max' не следует, чтобы элемент не регистрировался, пока я не нажму на страницу железной страницы? – dman

+0

@dman Обновленный ответ с объяснением – tony19

+0

'откладывает регистрацию элемента до тех пор, пока элемент не будет создан.' ... не будет ли это поведением по умолчанию, так как элемент должен быть создан первым? В противном случае он не может зарегистрировать элемент, который не существует. – dman