シンプルなリスト
配列をバインドするサンプルです。
テキストを入力しないと「追加」ボタンがクリックできないようになっています。
HTML コードで enable バインディングの使い方を確認して下さい。
デモ
コード: View
<form data-bind="submit: addItem">
新しいアイテム
<input data-bind='value: itemToAdd, valueUpdate: "afterkeydown"' />
<button type="submit" data-bind="enable: itemToAdd().length > 0">追加</button>
<p>アイテム一覧</p>
<select multiple="multiple" width="50" data-bind="options: items"> </select>
</form>
コード: ViewModel
var SimpleListModel = function(items) {
this.items = ko.observableArray(items);
this.itemToAdd = ko.observable("");
this.addItem = function() {
if (this.itemToAdd() != "") {
// アイテムを追加します。
// 追加先の items は observableArray なので、対応する UI が更新されます。
this.items.push(this.itemToAdd());
// itemToAdd は Observable であり、テキストボックスにバインドされているため、
// 次のようにすることでテキストボックスをクリアできます。
this.itemToAdd("");
}
}.bind(this); // this が常にこの ViewModel を指すようにします
};
ko.applyBindings(new SimpleListModel(["Alpha", "Beta", "Gamma"]));
jsFiddle で試す /
原文はこちら