如何使用knockout js从几个输入中获取价值?

时间:2014-07-30 15:56:30

标签: knockout.js knockout-mvc

我有四个这样的输入:

<input type="text" data-bind="value: Id" />
<input type="text" data-bind="value: Id" />
<input type="text" data-bind="value: Id" />
<input type="text" data-bind="value: Id" />

我需要从这些输入中检索数据并将它们放入数组中。我试过这样做:

`var data = [];

    var viewModel = {
        Id: ko.observable(),
        Ids: ko.observableArray(data),
        showReports: function () {
            var container = $('input[type=text]');
            container.each(function() {
                if (container.val().trim().length > 0) {
                    data.push({ Id: container.val() });
                }
            });
        }
    };
    ko.applyBindings(viewModel);`

当我用数据填写第一个输入时,其他的也被填充,但我需要将其他数据放在那里。我怎么能应付这个?将来我将有超过4个输入。

1 个答案:

答案 0 :(得分:0)

试试这个(未经测试):

<!-- ko foreach: Ids -->
    <input type="text" data-bind="value: Id" />
<!-- /ko -->

var data = [];

var viewModel = function () {
    var self = this;
    this.Id = ko.observable();
    this.Ids = ko.observableArray([{ Id: 1 }, { Id: 2 }, { Id: 3 }]);
    this.showReports = function () {
        for(var i = 0; i < self.Ids().length)
            data.push(self.Ids()[i];
    }
};
ko.applyBindings(new viewModel());