2015-06-03 2 views
0

Элемент My Polymer имеет атрибут массива размером от 1 до 10 000 элементов, поэтому мне нужно сгенерировать его при создании экземпляра элемента. Тем не менее, я бы действительно хотел бы передать в массив с помощью вызова функции или ссылка:Функция вызова функции Pass в качестве атрибута в Polymer?

<script> 
    function genArray(size){ 
    var a = []; 
    for(var i = 0, count = size - 1; i < count; i++){ 
     a.push("domain" + count + ".tld"); 
    } 
    return a; 
    } 
</script> 

<my-element domains="genArray()"></my-element> 

или ссылаться на глобальный объект.

<script> 
    function genArray(size){ 
    var a = []; 
    for(var i = 0, count = size - 1; i < count; i++){ 
     a.push("domain" + count + ".tld"); 
    } 
    return a; 
    } 

    window.myArray = genArray(1000); 
</script> 

<my-element domains="window.myArray"></my-element> 

Я пробовал вариацию цитаты стиль ("" против '') скобки ("{{genArray}}"), и я даже '{"array":window.myArray}'.

Я понимаю, что могу передать параметр или ссылку на глобальный объект и обработать их в обратном вызове жизненного цикла. Однако было бы намного чище и упростить тестирование/развертывание, если бы я мог передать вызов внешней функции. Я просто ввернута до тех пор, пока в ES7 не появятся шаблонные строки?

ответ

0

Привязки работают только в среде Polymer, но есть решение! Полимер обеспечивает вспомогательный компонент, называемый dom-bind, который можно использовать в любом месте страницы, даже за пределами элемента Polymer:

<script> 
    function genArray() { 
     ... 
    } 

    window.myArray = genArray(1000); 
</script> 
<template is="dom-bind"> 
    <my-element domains="[[myArray]]"></my-element> 
</template> 

Больше документации для этого компонента можно найти на https://www.polymer-project.org/1.0/docs/devguide/templates.html#dom-bind

+0

Вы уверены, что у вас есть синтаксис верный? Полимер больше не бросает предупреждения о невозможности синтаксического анализа в качестве массива, но теперь мой объект «доменов» просто не определен ... – Indolering

+0

Другой вопрос, не связанный с беспорядком библиотеки Полимеров со статически построенными/вулканизированными полимерными элементами ? – Indolering

+0

К сожалению, я не в среде, где я могу проверить этот синтаксис, но мне кажется, что привязки «dom-bind» будут искать свойства непосредственно в элементе 'dom-bind', а не' window' , Попробуйте присвоить 'template' идентификатор, а затем измените присваивание на' document.querySelector ('# my-id'). MyArray = genArray (1000); ' – Zikes

Смежные вопросы