2015-02-19 3 views
0

Это действительно беспокоит меня, похоже, не может заставить это работать, и я полагаю, что это будет небольшая мелочь, которую я пропускаю. Я получаю эту ошибку: Uncaught TypeError: undefined is not a functiontest-index.html:16 (anonymous function)Почему я не могу назвать функцию Polymer для элемента?

Вот код для воспроизведения, первый элемент:

<link rel="import" href="bower_components/polymer/polymer.html"> 

<polymer-element name="test-element" > 
    <template> 
     <div>YOOOOO</div> 
    </template> 

    <script> 
     Polymer({ 
      loaderup: function(event, detail, sender) { 
       alert("WAT?") 
      } 
     }); 
    </script> 

</polymer-element> 

А вот страница, которая пытается загрузить его:

<!doctype html> 
<html> 
<head> 
    <title>MyApp</title> 
    <script src="bower_components/webcomponentsjs/webcomponents.min.js"></script> 
    <link rel="import" href="test-element.html"> 
</head> 

<body unresolved> 

<test-element id="test-el"></test-element> 

<script> 
    var x = document.querySelector("#test-el"); 
    console.log(x); 
    x.loaderup(); 
</script> 

</body> 
</html> 

Но это дает I ошибке размещено около x.loaderup(). Есть идеи?

ответ

2

Вы должны ждать polymer-ready event, потому что обновление Polymer элемент выполняется асинхронно:

<script> 
    window.addEventListener('polymer-ready', function() { 
    var x = document.querySelector("#test-el"); 
    console.log(x); 
    x.loaderup(); 
    }); 
</script> 
Смежные вопросы