2016-08-30 46 views
3

當談到使用聚合物和JavaScript進行開發時,我很新,而且我覺得我切換紙質對話方式不是最好的方式,或者可以改進。目前,我嘗試調用自定義元素外的切換()函數,它的工作對我來說,雖然我得到
我創建了一個自定義元素錯誤名爲my-對話框:在自定義元素中切換紙張對話框聚合物

<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> 

錯誤信息。我得到我的控制檯:

(程序):5遺漏的類型錯誤:無法讀取空的特性 '的removeAttribute'(匿名函數)@(程序):5(匿名函數)@(程序):20


Error

如果有人能爲我清理一些東西,那會很棒。也許給我一個暗示我能做些什麼。

+0

你應該添加一個方法給你第一個自定義元素'我-dialog'和調用'切換()'從這裏開始。 – Supersharp

+0

但在我的個人資料視圖 中,該方法受制於晶圓廠您能否定義您的答案? – Niklas

+0

錯誤消息。上面顯然是與Chrome的ADBlock衝突http://stackoverflow.com/questions/38143879/cannot-read-property-removeattribute-of-null-cant-find-source-of-it – Niklas

回答

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

相關問題