2017-09-21 5 views
0

コトルには、kotlinxのようにhtmlを表すためのフレームワークがあります。どのようにしてこのようなフレームワークでWebコンポーネントタグを表現できますか?たとえば、ポリマーコンポーネントを使用したい場合、すべてのポリマーコンポーネントを含めるようにこれらのフレームワークを拡張する必要がありますか?KotlinのhtmlフレームワークでWebコンポーネントタグを表現する方法は?

答えて

0

https://github.com/Kotlin/kotlinx.html/tree/master/generate

リソースフォルダ内HTML5のソースXSDファイルもあります。 divs内で使用するdicom-editorというタグの場合:上記の例で

class DicomEditor(consumer: TagConsumer<*>) : 
     HTMLTag("dicom-editor", consumer, emptyMap(), 
       inlineTag = true, 
       emptyTag = false), 
     HtmlInlineTag {} 

fun DIV.dicom_editor(block: DicomEditor.() -> Unit = {}) { 
    DicomEditor(consumer).visit(block) 
} 
... 
div{ 
    dicom_editor { 
     onMouseDownFunction = {_ -> 
      window.alert("Dicom Editor") 
     } 
    } 
} 

dicom_editorコールは、マウスダウンイベントのコールバックを含みます。あなたはまた、atributesを追加することができます。attributes["data-toggle"] = "dropdown"

あなたはフィールドなどの属性を追加することができます:

class DicomEditor(consumer: TagConsumer<*>) : 
     HTMLTag("dicom-editor", consumer, emptyMap(), 
       inlineTag = true, 
       emptyTag = false), 
     HtmlInlineTag { 
      var data_toggle: String = "" 
       set(x) {attributes["data-toggle"] = x} 
     } 

fun DIV.dicom_editor(block: DicomEditor.() -> Unit = {}) { 
    DicomEditor(consumer).visit(block) 
} 
... 
div{ 
    dicom_editor { 
     data_toggle = "dropdown" 
    } 
} 

をKotlinコードでは、-の代わりに_を使用するために持っているか、エラーが発生します。

0

コンポーネントのXSDファイルを作成し、自動的に生成することができます。それはちょうどkotlinxがそれをする方法です。

ジェネレータはプロジェクトの一部です。ここでそれをチェックアウト:あなたはCustomize KotlinxCustom Tagを作成する)ことができます https://github.com/Kotlin/kotlinx.html/blob/master/generate/src/main/resources/html_5.xsd

+0

例を追加できますか? – dilvan

+0

[Kotlix Customizing DSL](https://github.com/kotlin/kotlinx.html/wiki/Micro-templating-and-DSL-customizing)の情報を使用して、私はほとんど新しいタグを作成することができました。ただし、Korlinxはイベントをサポートしていません(https://github.com/kotlin/kotlinx.html/wiki/Events)。誰かが別のフレームワークを提案できますか? – dilvan

関連する問題