私はPolymerのペーパーダイアログを使って外部イベントに応じてメッセージを表示しようとしていますが、単純なケースでも問題があります。私は 'this:$:undefined'というエラーが表示されています(下記のコードを参照)。Polymer:ダイアログを表示
<link rel="import" href="bower_components/polymer/polymer.html">
<link rel="import" href="bower_components/paper-dialog/paper-dialog.html">
<dom-module id="dialogtest-main">
<template>
<paper-dialog id='goodbyeDialog' modal>
<p> Goodbye! </p>
<div class='buttons'>
<paper-button dialog-dismiss>Cancel</paper-button>
</div>
</paper-dialog>
<p align="center">Hello...</p>
</template>
<script>
doTimer = function() {
element.openDialog();
}
element = {
is: "dialogtest-main",
ready: function() {
window.setTimeout(doTimer, 1000);
console.log("ready");
},
openDialog: function() {
console.log("opening dialog");
this.$.goodbyeDialog.open();
}
};
Polymer(element);
</script>
</dom-module>
私はopenDialogの機能にブレークポイントを配置し、コンソールで実行することにより、いくつかの必死のスタブを作っています
this.$
未定義
this.$.goodbyeDialog
はTypeError:この$未定義です。
element.$.goodbyeDialog
TypeError例外:要素$が未定義
document.getElementById("goodbyeDialog")
<紙ダイアログモーダル= "" ID = "goodbyeDialog" クラス= "スタイルスコープdialogtest-メインX-スコープ紙ダイアログ-0" ロール= "ダイアログです"tabindex =" - 1 "aria-hidden =" true "aria-modal =" true "style ="アウトライン:medium none;表示:なし; ">
document.getElementById("goodbyeDialog").open()
未定義
document.getElementById("goodbyeDialog").toggle()
未定義
任意のアイデア私が何か非常に単純な間違っているしなければならないと確信して
で
window.setTimeout(doTimer.bind(this), 1000);
を置き換えることができます'? –JavaScriptのスコープを勉強し、特に[ライフサイクル](https://www.polymer-project.org/1.0/docs/devguide/registering-elements#lifecycle-callbacks)の部分を読むことをお勧めします。それ以外の場合は、この種の問題が頻繁に発生します。 – Mason
@Mason、今後はこれを避けるためにもっと読書が必要です。先端に感謝します。 – philr