カスタム要素を定義しました。カスタム要素が登録された型にアップグレードされたときにのみスクリプトを実行します。ユースケースは、カスタムメソッドを呼び出す必要があるということです。カスタム要素がアップグレードされたときにスクリプトを実行する方法
私のメインのHTMLファイルには、次のようになります。
<project-list></project-list>
<script>
var project_list = document.getElementsByTagName("project-list")[0]
project_list.custom_method("some_data");
</script>
カスタム要素は、このようにHTMLのインポートに登録されている:私の質問は簡単です
<script>
"use strict";
var currentScript = document._currentScript || document.currentScript;
class ProjectList extends HTMLElement {
createdCallback(){
console.log("created");
}
custom_method(data) {
console.log("custom_method() OK");
console.log(data);
this.innerHTML = data;
}
}
document.registerElement("project-list", ProjectList);
</script>
:確認するスクリプトを作成する方法メインのhtmlファイルのカスタム要素がcustom_method
メソッドを取得した後にのみ呼び出されますか?
私は洗練されたソリューションを探しています。スペックの作者が考えていたもの。私はアーキテクチャをかなり変更しても構いません(例えば、javascriptをメインファイルから別のカスタム要素に移動するなど)。メソッド呼び出しの前に登録:
を実装しているブラウザでは、要素を作成して追加すると同期されます。ハードコーディングされたタグの点では、afaikには、 "allComponentsReady"のようなDOMイベントはありません。 1つの方法は、コンポーネント内から 'document'にカスタムイベントを発生させ、カスタムメソッドを必要とするページのコードに対して' onload() 'イベントのようにそのイベントを使用することです。 reduxのようなものを調べて、多くの異なるウェブコンポーネントやアプリメソッドを吸うことのない方法で結びつけることもできます。 – dandavis
@ダンダビス:これは私がしていることです。しかし、私はまた旗を立てました。フラグが設定されている場合、コンポーネントは既に設定されており、カスタムメソッドは即座に実行できます。それ以外の場合は、イベントが発生したときにスケジュールされます。私は使用しているコードで回答を投稿しました。 – MarcG
@dandavis:多くの異なるWebコンポーネントを配線する:いくつかのwebcomponentは他人に依存している場合、これらすべての他のコンポーネントは、準備が整うまで、それは設定の前に、それは、待たなければなりません/独自のフラグ/イベントを送出します。当然の – MarcG