2016-10-05 11 views
2

基本ポリマーのスターターキットのmy-appファイル内のパブリックメソッドの呼び出しは、TypeErrorで解決されます。 以下は、パブリックメソッドを使用して私がどのように悩まされたかの例です。しかし、my-appファイルのアイアンページ内のカスタム要素のメソッドを呼び出そうとすると、以下のコードは機能しません。ポリマーのカスタム要素/鉄ページのパブリックメソッドの呼び出し

<!--Script in parent file--> 
<script> 
    toggleDialog: function() { 
    this.$.myDialog.toggleDialog(); 
    } 
</script> 

<!--Script in Child--> 
<script> 
    toggleDialog: function() { 
     this.$.popUp.toggle(); 
    } 
</script> 

次の簡略化されたコードはエラーを作成します。 my-singlevideoページが選択されている場合は、attributeChangedをチェックしています。もしそうなら、私はpublicメソッドcallFunctionを呼び出そうとしています。

<dom-module id="my-app"> 
    <template> 
    <style> 
     :host { 
     display: block; 
     } 
    </style> 

    <app-location route="{{route}}"></app-location> 
    <app-route 
    route="{{route}}" 
    pattern="/:page" 
    data="{{routeData}}" 
    tail="{{subroute}}"></app-route> 

    <iron-pages 
    selected="[[page]]" 
    attr-for-selected="name" 
    fallback-selection="404" 
    role="main"> 
     <my-dashboard name="dashboard"></my-dashboard> 
     <my-profile name="profile"></my-profile> 
     <my-singlevideo name="singlevideo" id="singlevideo"></my-singlevideo> 
    </iron-pages> 

    </template> 

    <script> 
    Polymer({ 
     is: 'my-app', 

     properties: { 
     page: { 
      type: String, 
      reflectToAttribute: true, 
      observer: '_pageChanged' 
     }, 
     }, 

     observers: [ 
     '_routePageChanged(routeData.page)' 
     ], 

     _pageChanged: function(page) { 
     // Load page import on demand. Show 404 page if fails 
     var resolvedPageUrl = this.resolveUrl('my-' + page + '.html'); 
     this.importHref(resolvedPageUrl, null, this._showPage404, true); 
     }, 

     _routePageChanged: function(page) { 
     this.page = page || 'dashboard'; 
     }, 

     attributeChanged: function(name, type) {  
     if(this.getAttribute(name) == 'singlevideo') { 
      this.$.singlevideo.callFunction(); 
     } 
     }, 

    }); 
</script> 
</dom-module> 
+0

どのようなエラーが表示されますか?また、ブレークポイントを追加してnavitagionを確認してください。 – a1626

+0

私のbtn intツールバーを押すとconsole.logが表示されますがパブリックメソッドは決してページに届かないので、エラーは発生しません。 – Niklas

+3

デバッグするには完全なフローコードを参照する必要があります – a1626

答えて

0

あなたは(<my-student-search>)に到達するページがメインドキュメント内で一意である場合は、カスタム要素を取得するための標準的なdocument.querySelector()メソッドを使用することができます。

var comp = document.querySelector('my-student-search') 

代わりに、あなたはそれを照会することができますそのIDによって:

var comp = document.querySelector('my-student-search#theId') 

その後のパブリックメソッドを呼び出します。

comp.changeContent() 
+1

問題は要素の選択ではありません。私は基本的なポリマースターターキットのmy-appの中のカスタム要素ページの1つを選択したとします。カスタム要素のパブリックメソッドを呼び出すと、呼び出されることはありません(関数TypeErrorではありません)。 – Niklas

+0

@ NiklasLangデバッグするコードを提供する必要があります – Supersharp

+0

私の質問を構造化し、いくつかのサンプルコードを追加しました。 – Niklas

関連する問題