0

ko.mapping プラグインでマッピングしている JSON 文字列があり、マッピングされた配列の 1 つに対して観察可能なバインディングを作成する必要があります。配列は [1,2,3,4,5] として JSON にあるため、インデックスはありません。

次のコードが特定の時点まで機能しています。

<script id="statRowTemplate" type="text/html">
    {{if type() != "column"}}
    <tr>
            <td><label>Name: </label><input data-bind="value: name" /></td>
            <td><label>Plot Points: </label><ul data-bind="template: {name: 'dataTemplate' , foreach: data}"></ul> </td>
    </tr>
    {{/if}}
</script>
<script type="text/html" id="dataTemplate">         
<li>
    <p>${this.data}</p>
        <input data-bind="value: this.data" />
</li>
</script>
<button data-bind="click: saveChanges">Save Changes</button>

<input data-bind="value: this.data" />したがって、そのフィールドが空白のままであることを除いて、すべてが期待どおりに機能しています...${this.data}ただし、正しい値が表示されます。

全体として、JSON 文字列を更新し、それをフラット ファイルに再保存しようとしています。データ配列を入力値に直接バインドでき[1,2,3,4]ますが、配列として更新されません。

これがビューモデルです: var viewModel = {};

$.getJSON('/data-forecast-accuracy.json', function(result) {

    viewModel.stats = ko.mapping.fromJS(result);
    console.log(result)
    viewModel.saveChanges = function() {

        var unmapped = ko.mapping.toJSON(viewModel.stats);
        console.log(unmapped);

        $.post('save-changes.php', {data: unmapped})
        .success(function() { console.log("second success"); })
        .error(function() {  console.log("error"); })
        .complete(function() {  console.log("complete"); });
    }

    ko.applyBindings(viewModel);
});

JSONは次のとおりです。

[ { "type":"spline", "marker":{ "symbol":"diamond" }, "name":"Cumulative", "data":[10,17,18,18,16,17,18,19] }, { "type":"spline", "marker":{ "symbol":"circle" }, "name":"Monthly", "data":[10,22,20,19,8,20,25,23] } ]

どんな助けでも大歓迎です。また、間違った角度からアプローチしている場合は、提案をお待ちしています。最終的には、UI を介して JSON 文字列を変更して保存できるようにしたいだけです。

前もって感謝します。

4

1 に答える 1

1

配列内の値を適切に編集するには、元の配列を、becks に対してバインドする実際のプロパティを含む構造体にマップする必要があり[1,2,3]ます[{val: 1}, {val: 2}, {val: 3}]。KO はユーザー入力からそれを更新する方法を決定できないため、バインド$dataは機能しません (現在、配列内の特定のインデックスに配置されていることを理解できません)。

私は次のようなことをしたい: http://jsfiddle.net/rniemeyer/vv2Wx/

これは、この手法を使用して、JSON に変換されたときに配列が自動的に元のように見えるようにします。

于 2011-09-30T15:12:53.403 に答える