0

私はノックアウトが初めてで、現在のプロジェクトでそれを機能させる方法を見つけようとしています。具体的には、サーバーへの ajax 呼び出しを介して json データが読み込まれるビューモデルがあります。データが受信されると、ノックアウト バインディングが適用され、データが画面上の html に表示されます。うまくいきます。

ここで難しい部分が... (少なくとも私にとっては) また、html には、ユーザーが値を選択できる要素 (チェックボックス、ラジオ ボタン、ドロップダウンなど) があります。値の選択が完了すると、このユーザーはボタンをクリックしてページ上のデータを更新します。したがって、ボタンをクリックすると、選択した値がサーバーに返され、データベースに新しいデータ コレクションが再クエリされます。次に、サーバーは更新された json のリストをページとノックアウトに送り返す必要があり、viewmodel と html 表示を新しいデータで更新する必要があります。または、少なくともこれが機能するために必要な方法です。私はしばらくの間、これを行う方法について頭を悩ませてきました。

したがって、データベースにクエリを実行し、ノックアウトとビューモデルをバインドし、データを表示した後、データベースを再クエリして別のデータを要求し、サーバーから新しいデータを取得し、ノックアウトとビューモデルを新しいデータに再バインドし、新しいデータを表示するにはどうすればよいですか?同じhtmlページ(更新されたデータのみ)?????

前もって感謝します!

4

1 に答える 1

0

ビューモデル全体を更新する代わりに、ビューモデル内のデータを表すモデルを使用して、このモデルを更新することができます。

        function ViewModel()
        {
            this.data = ko.observable();
            var self = this;

            self.load = function()
            {
                var dataModel = new DataModel(1, 'Value');
                self.data(dataModel); // init
            };

            self.update = function()
            {
                var dataModel = new DataModel(2, 'Value UPD');
                self.data(dataModel); // update
            };
        }

        function DataModel(id, property)
        {
            this.id = id;
            this.property = property;
        }

        ko.applyBindings(new ViewModel());
于 2012-08-30T06:23:37.477 に答える