1

データにWebAPIを使用するASP.NETMVCアプリケーションと、フロントエンドにKnockOutJSがあります。ほとんどの場合、物事はかなりうまく機能しますが、値を更新するときに、それらの値がバインドされた要素に反映されていないことに気付き始めました。

これは、データがサーバーからJSONとして渡され、プレーンなJSONオブジェクトに変換されるためです。つまり、「オブザーバブル」としてマップされているプロパティはないため、オブジェクトの値を変更しても、何も更新されません。

追加した「マッピング」と呼ばれるKnockOutJSのプラグインについて読みましたが、それを機能させるための正しい構文を完全に理解することはできません。他の誰かがこれに対処し、いくつかの提案があることを願っています。これが私の現在のコードです:

<script type="text/javascript">
    function BlogViewModel() {
        var self = this;
        self.blogs = ko.observableArray();
        var baseUri = '@ViewBag.ApiUrl';

        //$.getJSON(baseUri, self.blogs);
        $.getJSON(baseUri, {},
                function (data) {
                    ko.mapping.fromJSON(data, self.blogs);
                });
    }

    $(document).ready(function () {
        ko.applyBindings(new BlogViewModel());
    });

    });
</script>

コメントアウトされた部分($ .getJSON(baseUri、self.blogs);)は、以前はそこにあったものであり、データの取得と表示に関して「機能」します。

そのすぐ下のコードは、データを読み込んでマッピングを適用するための私の試みです。まったく機能していません。つまり、ページにデータが表示されていません。

明らかな何かが欠けていると確信していますか?

4

1 に答える 1

2

次のように、JSON データを ko ビューモデルにマップします。

ko.mapping.fromJSON(data, {}, self.blogs);
于 2014-04-11T12:27:41.440 に答える