使用具有淘汰赛的复杂模型

时间:2015-01-10 23:57:32

标签: jquery knockout.js asp.net-mvc-5.2

我想模仿knockout.js中的复杂模型:

function DefInfo(dfirst, dlast) {
    this.dfirst = ko.observable(dfirst);
    this.dlast = ko.observable(dlast);
}

function PaymentViewModel() {
     var self = this;
     self.pmt = ?? (where pmt.defInfo = DefInfo, pmt.contact = ContactInfo, etc
}

基本上我要做的就是使用ko.toJson(pmt)传回json;

这可能吗?

由于

2 个答案:

答案 0 :(得分:0)

当然可以嵌套viewModel对象。

尝试类似:

function DefInfo(dfirst, dlast) {
    this.dfirst = ko.observable(dfirst);
    this.dlast = ko.observable(dlast);
}

function Payment(defInfo, contactInfo) {
    this.defInfo = ko.observable(defInfo);
    this.contactInfo = ko.observable(contactInfo);
}

function PaymentViewModel() {
     var self = this;
     self.pmt = ko.observable(new Payment(new DefInfo("a", "b"), new ContactInfo()));
}

如果你不需要它们可观察,你甚至可以做一些简单的事情:

function PaymentViewModel() {
     var self = this;
     self.pmt = {
         defInfo: new DefInfo("a", "b"),
         contact: new ContactInfo()
     };
}

答案 1 :(得分:0)

好的 - 我尝试了你的代码,我无法在html中获得绑定权限。这就是我所拥有的:

   <div class="panel panel-body`">

<fieldset>
    <legend>Defendant Information</legend>
    <div class="form-group">
        <label for="dfirst">First Name:</label>
        <input data-bind="text: dfirst" type="text" id="dfirst" />
    </div>
    <div class="form-group">
        <label for="dlast">Last Name:</label>
        <input data-bind="text: dlast" type="text" id="dlast" />
    </div>
</fieldset>

<button data-bind="click: makePayment" class="btn btn-default">Make Payment</button>
 </div>   

当我输入值并单击makePayment按钮时 - 我检查pmt.defInfo的值,它们仍然是空白的。

感谢。