2016-08-30 6 views
3

ポリマーとJavaScriptを使用して開発する場合にはかなり新しいですが、紙のダイアログを切り替える方法が一番良い方法ではないか、改善できると感じています。私はカスタム要素を作成し
エラーが私の-ダイアログと呼ばれる取得していますが、現在、私は、カスタム要素の外側からトグル()関数を呼び出すようにしようと、それは私の作品:のいずれかからカスタム要素にある用紙ダイアログを切り替えますポリマー

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

    <paper-dialog id="popUp" with-backdrop on-iron-overlay-opened="patchOverlay"> 
     <!-- Dialog content --> 
     <h2>Hello World</h2> 
    </paper-dialog> 

    </template> 

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

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

を私私は今、紙のボタンをクリックするとダイアログを開いて閉じたいと思っています。これはうまくいきますが、私が上で述べたように、私が実際に行っていることは本当にプロフェッショナルではないという気持ちがあります。

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

    <paper-fab icon="create" id="myBtn" on-tap="toggleDialog"></paper-fab>   
    <my-dialog id="myDialog"></my-dialog> 

    </template> 

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

     //Open dialog 
     toggleDialog: function() { 
     var dialog = this.shadowRoot.querySelector('#myDialog'); 
     var popUp = dialog.shadowRoot.querySelector('paper-dialog'); 
     popUp.toggle(); 
     }, 
    }); 
    </script> 
</dom-module> 

エラーmsg。

(プログラム):5キャッチされない例外TypeError:私は私のコンソールで取得していますヌルのプロパティ 'removeAttribute'(無名関数)を読み取ることができません@(プログラム):5(匿名関数)@(プログラム):20


Error

誰かが私のために物事をクリアすることができれば素晴らしいでしょう。そして、私が他に何ができるかをヒントにしてください。

+0

あなたはあなたに最初のカスタム要素 '私-dialog'のメソッドを追加し、ここから'トグルを() 'を呼び出す必要があります。 – Supersharp

+0

しかし、この方法は私のプロファイルビューで工場から騙されてしまう 答えをもう少し定義できますか? – Niklas

+0

エラーmsg。上記は明らかにChrome ADBlockとの競合です。 http://stackoverflow.com/questions/38143879/cannot-read-property-removeattribute-of-null-cant-find-source-of-it – Niklas

答えて

2

第2の要素my-profile-viewは、最初の要素の内部ロジックを知りません。my-dialog

代わりに、あなたのカスタマイズダイアログに公開方法(つまり、toggleDialog)が公開されている必要があります。

私-dialog.html <script>

Polymer({ 
    is: 'my-dialog', 
    toggleDialog: function() { 
    this.$.popUp.toggle() 
    } 
}); 

この方法では、あなたの第二の要素によって呼び出される可能性があります。

私のプロファイル-view.html <script>

Polymer({ 
    is: 'my-profile-view', 
    //Open dialog 
    toggleDialog: function() { 
    this.$.myDialog.toggleDialog() 
    } 
}); 
+0

これは私が探していたものですために。説明に感謝します。 – Niklas

関連する問題