0

KnockoutJSの調査を開始して、ASP.NETMVCアプリで使用できるかどうかを確認しました。そして、私が理解しようとしている多くの灰色の領域があります。JSON全般についての理解が乏しいため、もっと認めなければなりません。間違っていない場合は、特にASP.NET JSON形式が原因であるか、答えが必要な方法で完全に間違っている可能性があります。

ASP.NETMVCが$.getを介して返すデータモデルを複製する方法を知りたいだけです。JavaScriptモデル経由。

  1. 1つの単純なオブジェクト
  2. ネストされた/複雑なオブジェクト

コード:

list = ko.observableArray([]);
ko.applyBindings(list);

function loadTeamMembers(projectId) {
    $.ajax({
        type: "GET",
        url: "/Project/GetTeamMembers?projectId=" + projectId,

        success: function (data) {

            $(data).each(function (index, item) {
                list.push(item);
            });
        }
    });
}

loadTeamMembers(6);

私は自分のテーブルで上記のコードを使用しました。ここでは、これをノックアウトリスト(機能します)でデータバインドしています。リストへの/リストからの新しいアイテムの追加/削除はどうですか?クライアント側でJavaScriptモデルが必要になると思います。ASP.NET MVC JSONデータで動作するようにクライアントでJavaScriptモデル(前述の2つの例を探して)をどの程度正確に作成する必要がありますか?

任意の情報やリンクをいただければ幸いです。

4

1 に答える 1

0

モデル内のコレクションを操作するために、追加の関数でマッピングを使用する例を次に示します。

var MainViewModel = function (jsonObj) {
    //needed for accesing this inside functions
    var self = this;

    //Mapping from json object
    ko.mapping.fromJS(jsonObj, {}, self);

    //Additional properties that you might need Client-Side but that you don't have on your server viewModel
    self.CustomProperty = ko.observable();
    self.AnotherProperty = ko.observable();

    //Example of functions used to add or delete objects inside an observable array
    self.addRow = function () {
        self.loanEntries.push(new LoanEntryViewModel());
    };
    self.deleteRow = function (row) {
        self.loanEntries.remove(row);
    };
};

ko.mapping.fromJS は json オブジェクトを受け取り、サーバー側クラスのすべてのプロパティを再度定義することなく ViewModel を作成します。通常、コントローラーには、マッピングに使用する空のオブジェクトを返す「GetMappingObject」というメソッドがあります。

それが役立つことを願っています。これらを必ずチェックしてください:

于 2013-02-17T15:26:50.057 に答える