Javascript 嵌套对象上的Knockoutjs嵌套foreach
我对KnockoutJs还不熟悉,似乎无法理解这一点。我有一个称为“周”的对象数组,每个对象都有一个称为“周”的对象数组。我怎样才能每星期做一次飞行呢。这是我到目前为止所做的尝试,但毫无结果 型号:Javascript 嵌套对象上的Knockoutjs嵌套foreach,javascript,object,knockout.js,Javascript,Object,Knockout.js,我对KnockoutJs还不熟悉,似乎无法理解这一点。我有一个称为“周”的对象数组,每个对象都有一个称为“周”的对象数组。我怎样才能每星期做一次飞行呢。这是我到目前为止所做的尝试,但毫无结果 型号: var Model = { weeks: ko.observableArray([ {"week":[ {day:'01', total:'109'}, {date:'05', total:'250'} ]}, {"week":[ {date:'02', total:'102'}, {date
var Model = {
weeks: ko.observableArray([
{"week":[ {day:'01', total:'109'}, {date:'05', total:'250'} ]},
{"week":[ {date:'02', total:'102'}, {date:'05', total:'255'} ]}
])
};
ko.applyBindings(Model);
视图:
多谢各位 使用@nemesv对您的视图模型所做的相同修复,下面是您每周如何循环(根据您最初的问题)。这是一把小提琴
函数loopWeeks(){
ko.utils.arrayForEach(Model.weeks(),function(weeks){
对于(变量i=0;i
它有点难看,至少在KO方面是这样;但你的个人周数是不可见的。如果您希望它们是可观察的,请告诉我,我将更改帖子。如果您对每个对象使用相同的属性名称:因此,替换date to day,那么您的代码工作正常:我认为您有一个输入错误:第一个对象指代day属性,其他对象指代date属性。因此,请按日期替换日期。谢谢,真遗憾,我调试了一个打字错误两个小时,请注意,您当前的设置中观察到了周数组,但没有“周”数组中的数组,也没有该数组中的属性。因此,根据您实际要做的事情,您在这里受到了很大的限制。如果您不想在上foreach(“Weeks”)中使用任何元素,您可以像使用代码一样使用ko绑定
<section class="dates" data-bind="foreach: weeks">
<article data-bind="foreach: $data.week">
<span class="day" data-bind="text: day"></span>
<span class="dayTotal" data-bind="text: total"></span>
</article>
</section>
function loopWeeks() {
ko.utils.arrayForEach(Model.weeks(), function (weeks) {
for (var i = 0; i < weeks.week.length; i++) {
console.log(weeks.week[i]); // here you have access to one of your week objects
// set value of a day
weeks.week[i].day = "4";
// get value of a day
var day = weeks.week[i].day;
}
});
}