带有敲除映射的映射列表 [英] Mapping List with Knockout Mapping

查看:98
本文介绍了带有敲除映射的映射列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建了视图模型

var catalog = ko.observableArray();

$.ajax({
    type: "GET",
    url: "http://localhost:8080/ticket-service/rest/ticket/list",
    success: function(msg) {
        catalog.push.apply(catalog, $.map(msg, function(data) {
            return new Ticket(data)
        }));
        return catalog;
    },
    error: function(msg) {
        console.log(msg)
    }
});

和模型

    function Ticket(data) {
    this.ticketId = ko.observable(data.ticketId);
    this.ticketNo = ko.observable(data.ticketNo);
    this.ticketTitle = ko.observable(data.ticketTitle);
    this.longDescription = ko.observable(data.longDescription);
    this.createdBy = ko.observable(data.createdBy);
    this.createdOn= ko.observable(data.createdOn);
    this.assignTo = ko.observable(data.assignTo);
    this.priority = ko.observable(data.priority);
    this.dueDate = ko.observable(data.dueDate);
    this.status = ko.observable(data.status);
    this.projectId = ko.observable(data.projectId);
}

在像这样的视图模型的最后

with at the end viewmodel like this

    return {
        ticket: newTicket,
        searchTerm: searchTerm,
        catalog: filteredCatalog,
        newTicket: newTicket,
        addTicket: addTicket,
        delTicket: delTicket
    };
})();
console.log(vm);

ko.applyBindings(vm);

产生列表,添加和删除表单.问题是我如何使用可以从get方法中列出的敲除映射.

produce list,add, and delete form.The question is how can i use knockout mapping that can list from get methode.

推荐答案

您需要执行以下操作

展示了从您的代码中获取单个实体.

Demonstrated taking a single entity from your code .

视图:

Output Preview :
<pre data-bind="text:ko.toJSON($data,null,2)"></pre>

viewModel:

function Ticket(data) {
    this.ticketId = ko.observable(data.ticketId);
}

var mapping = {
    create: function (options) {
        return new Ticket(options.data);
    }
};

var ViewModel = function () {
    var self = this;
    self.catalog = ko.observableArray();
    var data = [{
        'ticketId': 1
    }, {
        'ticketId': 2
    }]

    //under ajax call do the same but pass 'msg' in place of data 
    self.catalog(ko.mapping.fromJS(data, mapping)())
    console.log(self.catalog()); // check console for output 
};

ko.applyBindings(new ViewModel());

示例工作小提琴 此处

sample working fiddle here

这篇关于带有敲除映射的映射列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆