0

我已经开始探索 KnockoutJS 只是为了看看我是否可以将它与我的 ASP.NET MVC 应用程序一起使用。我正在努力找出许多灰色地带。我必须承认更多,因为我对 JSON 的理解很差,如果我没有错,那也可能是因为特别是 ASP.NET JSON 格式,或者我完全错了,无论我需要答案。

我只想知道如何复制 ASP.NET MVC 通过 $.get 返回的数据模型。通过 JavaScript 模型。

  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);

我在我的表上使用了上面的代码,我将它与 Knockout 列表(有效)进行了数据绑定。如何在列表中添加/删除新项目?我希望我在客户端需要一个 JavaScript 模型。我应该如何在客户端上创建 JavaScript 模型(寻找上述两个示例)以便它与 ASP.NET MVC JSON 数据一起使用?

任何信息或链接将不胜感激。

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 回答