Asp.net mvc 强制ko.mapping创建具有映射属性的空数组

Asp.net mvc 强制ko.mapping创建具有映射属性的空数组,asp.net-mvc,knockout.js,knockout-mapping-plugin,Asp.net Mvc,Knockout.js,Knockout Mapping Plugin,我正在从mvc4中的一个模型在Knockout中创建一个视图模型。我正在使用映射插件。当前代码如下所示 首先:我将需要的不同MVC4模型合并到一个单独的模型中 var mergedData = $.extend(true, {}, initialEventData, { "Tickets": initialTicketData }, { "TimeZones": timeZones } ); var mapping = { 'Tickets': { create

我正在从mvc4中的一个模型在Knockout中创建一个视图模型。我正在使用映射插件。当前代码如下所示

首先:我将需要的不同MVC4模型合并到一个单独的模型中

var mergedData = $.extend(true, {}, initialEventData,
    { "Tickets": initialTicketData }, { "TimeZones": timeZones }
);
var mapping = {
    'Tickets': {
        create: function (options) {
            return new updatedTicket(options.data);
        }
    }
}

var updatedTicket = function (data) {
    ko.mapping.fromJS(data, {}, this);

    this.formattedPrice = ko.computed(function () {
        return "$" + parseFloat(this.Price()).toFixed(2);
    }, this);
}
Second:我添加了一些映射,将计算函数添加到我的viewmodel中

var mergedData = $.extend(true, {}, initialEventData,
    { "Tickets": initialTicketData }, { "TimeZones": timeZones }
);
var mapping = {
    'Tickets': {
        create: function (options) {
            return new updatedTicket(options.data);
        }
    }
}

var updatedTicket = function (data) {
    ko.mapping.fromJS(data, {}, this);

    this.formattedPrice = ko.computed(function () {
        return "$" + parseFloat(this.Price()).toFixed(2);
    }, this);
}
最后:我应用绑定

var eventViewModel = ko.mapping.fromJS(mergedData, mapping);

但是:有时,票证模型可能会返回空。发生这种情况时,映射插件不会创建可观察数组(显然)。我需要创建一个带有映射属性的空数组,以便推送新票证。

我只需在映射配置中添加一个检查。检查UpdateDicket函数中是否有数据,如果没有,请手动创建一个可观察的数组

只需创建一个容器viewmodel,您可以在其中创建默认的票证数组。。。 此外,在回调函数中,请确保使用引用“this”的变量


我想把这张票换成几行。var-viewModel=function(data){var-data=data | |{},tickets=data.tickets;}——如果我知道如何在markdown中格式化它,那就填充了!?