2017-06-06 52 views
0

考慮this Plunker minimal example code的onclick內嵌腳本不能參考ID在陰影-DOM(聚合物V2.0)

<dom-module id="my-element"> 
    ... 
    <button onclick="dialog.open()">What is Confucianism ?</button> 

    <paper-dialog id="dialog" modal> 
    <h2>Confucianism</h2> 
    <p>...</p> 
    </paper-dialog> 
    ... 
</dom-module> 

將不起作用。

我使用聚合物V2.0。當我點擊按鈕dialog.open()失敗並且說對話框未定義。

在以前版本的Polymer中,此代碼可行,但現在我已升級了代碼,我必須在使用紙對話元素的任何地方清除此問題。我目前的解決辦法是增加一個上單擊屬性在我的代碼的所有按鈕和手動編寫一個綁功能,並執行this.$.<dialogID>.open();,但我不明白爲什麼我要做到這一點,而且它似乎像一個問題因爲我編寫了更多乏味的代碼,而這種後續兼容性似乎更像是新版本的缺點。

我真的做錯了嗎?

回答

0

這種方法非常糟糕。你應該總是調用一個打開對話框的函數。另外,你應該使用聚合物事件處理程序。例如on-tap

爲什麼你的代碼不再有效?那麼這取決於你是否使用了影子dom。因爲在陰影DOM中,有shadowRoots,我們假設它是關閉的,所以window對象不再具有將ID保存爲屬性的元素。

通常,它的工作原理是因爲無論何時使用某個ID定義元素,該元素都保存在window對象內,這就是爲什麼您可以執行<someID>.<someFunction>

所以它的使用聚合物事件處理函數,您一定要重寫你的應用程序。

編輯:

考慮這個功能要求#4647爲未來的可靠的解決方案。

+0

@ballangddang感謝編輯和良好的鏈接。我一直在看更新日誌,所以我希望我很快就能看到這個功能。它可以真正刪除許多樣板功能 –

相關問題