私はこれを持っています:
<div data-bind="with: storeModel.stores()">
<h1>Store count <span data-bind="text: '(' + $data.length + ')'"></span></h1>
<ul id="stores" data-bind="foreach: $data">
<li data-bind="text: Name, click: $root.storeModel.editStore"></li>
</ul>
</div>
<div id="editStore" data-bind="with: storeModel.currentEditItem()">
<form data-bind="submit: $root.storeModel.saveStore" action="">
<fieldset>
<legend>Foo</legend>
<label for="name">Name:</label>
<input type="text" data-bind="value:Name" id="name" />
<label for="address">Address:</label>
<input type="text" data-bind="value:StreetAddress" id="address" />
<label for="postalcode">Postal code:</label>
<input type="text" data-bind="value:PostalCode" id="postalcode" />
<label for="city">City:</label>
<input type="text" data-bind="value:City" id="city" />
<button style="display:block" type="submit" data-bind="jqButton: $data">Save</button>
</fieldset>
</form>
</div>
p.editStore = function(store, event) {
location.hash = 'Stores/Edit/' + ko.utils.unwrapObservable(store.StoreId);
p.currentEditItem(store);
//Append edit form to li, how?
}
ここで、各 li 要素のクリック イベントで、その li に編集フォームを追加したいと思います。ここで編集フォームを維持するためのテンプレートは良い考えですか? そうしないと、li ごとに編集フォームを生成する必要があります。
または、バインディングハンドラーを使用する必要がありますか?
主に jQuery から来ているため、KO で UI を扱うのはかなり混乱する可能性があります。すべての回答をお待ちしております。