Knockout Custom ComponentをTypeScriptで記述
実行イメージ
注意ポイント
Windowオブジェクトのonloadイベントハンドラにおいて、 applyBindings関数呼び出し前に、先にComponentを登録しておきましょう。 (以下の例では、"name-editor" という名前のComponent)
なお、Knockout.jsのapplyBindings関数とは、Knockout.jsをアクティブ化する(ビューモデルとビューを関連付ける)ためのものです。
<!DOCTYPE html> <html lang="ja"> <head> <title> Component Example </title> <script src="Scripts/knockout-3.4.0.debug.js"></script> <script src="app.js"></script> <script type="text/html" id="my-component-templete"> <p>Enter your name: <input data-bind='value: name' /></p> <p>You entered <strong data-bind='text: name()'></strong></p> </script> </head> <body> <name-editor params="value: 'hello world'"></name-editor> <div data-bind="component: { name: 'name-editor', params: { value: 'hoge bar' } }"></div> </body> </html>
/// <reference path="scripts/typings/knockout/knockout.d.ts" /> class ViewModel{ name: KnockoutObservable<string> = ko.observable<string>(); constructor(params: any) { this.name(params.value); } } // MyViewModelメソッド class MyViewController { constructor() { } } // Windowオブジェクトのonloadイベントハンドラに、JavaScriptコードを登録します。 window.onload = function () { // ko.components.register を使い "name-editor" という名前のComponentを登録しています。 ko.components.register('name-editor', { viewModel: ViewModel, template: { element: 'my-component-templete' } }); ko.applyBindings(new MyViewController()); };