Knockoutjs在嵌套对象上嵌套foreach

时间:2013-12-04 20:51:57

标签: javascript object knockout.js

我是KnockoutJs的新手,似乎无法解决这个问题。我有一个名为“周”的对象数组,每个对象都有一个名为“week”的对象数组。我怎样才能每周做一次foreach。这是我到目前为止尝试但无处可去的地方。

模型:

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);

视图:

<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>

非常感谢!

1 个答案:

答案 0 :(得分:1)

使用@nemesv对您的视图模型执行的相同修复,以下是您每周循环的方式(根据您的原始问题)。这是一个显示它的小提琴,http://jsfiddle.net/b7gpP/

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;

        }
    });
}

它有点难看,至少在KO方面;但你的个人周是不可观察的。如果你打算让他们成为可观察者,请告诉我,我会更改帖子。