TiddlyWiki/Dev - Core Application (4)
TiddlyWiki Core Applicationの続き
- 動的な振る舞いはふたつの方法で追加できる
から
メッセージ
- メッセージはユーザによって発信されるイベントで、ウィジェットによって生成される
- "tm-delete-tiddler"といった型のプロパティを持つ
- メッセージは親へ親へと送られ、それぞれのウィジェットが処理を試みる
- 子ウィジェットは
dispatchEvent(message)
を呼んでウィジェットのツリーの上方へメッセージを送る addEventListner(type,listner)
は特定のメッセージタイプに関数を結びつける- リスナーがfalseを返したらメッセージは親ウィジェットへと送られる
- TiddleyWikiコアプラグインではNavigatorWidgetで多くのメッセージを扱う
選択的更新
- たとえば、"important"というタグの付いたTiddlerをリストするListWidgetは、Tiddlerから"important"タグが削除されたときにはそれを反映するべきである
- そういった目的のために、ウィジェットは
refresh(changedTiddlers)
関数を持つ - 変更があると、RootWidgetはその子ウィジェットの
refresh
を呼ぶ - 各々のウィジェットはDOMの内容を再表示するかどうかを決め、さらにその子ウィジェットの
refresh
を呼ぶ - テキスト参照のアトリビュートを持つウィジェットの
refresh
が呼ばれたときは、そのアトリビュートが変更されたTiddlerを参照しているかどうかを確認する
たとえば
- 検索メカニズムは、EditTextWidgetによってテキスト入力フィールドを表示し、ListWidgetで結果を表示する
- EditTextWidgetは
$:/temp/search
というTiddlerに結び付けられている - テキストが変更されると、RootWidgetからrefresh関数が呼び出され、必要に応じて表示が更新される