knockout.js 如何使用foreach将值设置为数组

8fsztsew  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(153)

我如何使用循环将值添加到数组中。我已经通过硬编码将值添加到数组中,但我需要将大量数据添加到www.example.com中array.so,这是很难通过硬编码完成的。这是我的JS代码的一部分。

function BModel(checkInOrEdit) {
    "use strict";
    this.Number = ko.observable("");
    this.Years = ko.observableArray(['', '2019', '2018', '2017', '2016', '2015', '2014', '2013', '2012', '2011', '2010', '2009', '2008', '2007', '2006', '2005', '2004', '2003', '2002', '2001', '2000']);
}

BModel.prototype = {

    addTo: function (isSupervised) {
        "use strict";
        this.fname($.trim(this.fname()));
        this.lname($.trim(this.lname()));

    },

    AcDone: function (result, stat) {
        "use strict";
        var validationResults = JSON.parse(result.d);
        var msgTitle = '';
    }
}

$(document).ready(function () {

});

我需要给Years加上值,从今年开始,直到1900.how,我可以这样做吗?目前,我是硬连线的。

this.Years = ko.observableArray(['', '2019', '2018', '2017', '2016', '2015', '2014', '2013', '2012', '2011', '2010', '2009', '2008', '2007', '2006', '2005', '2004', '2003', '2002', '2001', '2000']);
7rtdyuoh

7rtdyuoh1#

我建议你先创建一个helper函数,它可以返回一个数组中的一系列数字。然后,你可以使用helper函数来初始化你的可观察数组。

推送到foreach中的可观察数组可能会有多次重绘DOM的风险!

下面是一个range帮助器(可以进行重构以使其更加简洁)和一个可观察数组的示例:
第一个

yrefmtwq

yrefmtwq2#

您可以这样做:

function BModel(checkInOrEdit) {
  "use strict";
  this.Number = ko.observable("");
  this.Years = ko.observableArray();
  let lyears = [];
  for (let i = 1900; i <= new Date().getFullYear(); i++) { 
    lyears.push(i);
  }
  this.Years(lyears); // see comments
}

这不是最优雅的方法,但如果你想使用循环,这就是你要做的。

相关问题