各アイテムが編集可能(編集可能なグリッドのようなもの)の編集可能なリストを表示したいと思います。私はKnockoutJSを使用しています。 "observableArrayは、どのオブジェクトが配列内にありオブジェクトの状態ではないかを追跡するため、単純なObservable Arrayは使用できません。"したがって、私はobservableオブジェクトのobservableArrayを作成しました(utilsを使用してobservableArrayを作成しました。 arrayMap)を作成し、ビューにバインドします。しかし、問題は、画面上のデータを編集すると、ユーザーが画面上で行うデータ入力の変更が有効にならないように見えるということです。 http://jsfiddle.net/AndyThomas/E7xPM/KnockoutJS - 観測可能なオブジェクトの観測可能配列
私は間違っていますか?
<script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.0.0/knockout-min.js" type="text/javascript"></script>
<table>
<tbody data-bind="template: { name:'productListJavascriptTemplate', foreach: products}">
</tbody>
</table>
<script type="text/html" id="productListJavascriptTemplate">
<tr>
<td>Name: <input data-bind="value: Name"/></td>
<td>Name: <span data-bind="text: Name"/></td>
<td><select data-bind="options: this.viewModel.categories,
optionsText: 'Name', optionsValue: 'Id', value: CategoryId,
optionsCaption: 'Please select...'"></select></td>
<td>CategoryId: <input data-bind="value: CategoryId"/></td>
</tr>
</script>
var categoryList= [
{
Name: "Electronics",
Id: "1"},
{
Name: "Groceries",
Id: "2"}
];
var initialData= [
{
Name: "Television",
CategoryId: "1"},
{
Name: "Melon",
CategoryId: "2"}
];
var viewModel = {
products: ko.observableArray(
ko.utils.arrayMap(initialData, function(product) {
return ko.observable(product);
})),
categories: ko.observableArray(categoryList)
};
$(function() {
ko.applyBindings(viewModel);
});
完璧thanksssssを参照してください! – Andrew