使用knockout

时间:2015-11-19 20:28:58

标签: arrays knockout.js

我目前有一个数组被传递到我的函数中,我想从数组中提取信息,以便我可以在页面上显示它。

这就是数组的样子:

EducationalClasses:[object, object]

first object contains: 
     classId: "324342",
     className: "English 101"
second object contains:
     classId: "231243",
     className: "Reading"

当我做educationClasses [0]时,我得到第一个对象的结果。我想创建某种循环,以便在我的视图页面中有:

<!-- ko foreach: educationalClasses -->
    <div data-bind="text: className></div>
<!--/ko-->

我会得到英语101和阅读显示

这就是我的viewModel:

viewModel = function(educationalClasses){
    ....
    self.className= ko.observable(educationalClasses.className); // what i want
}

如何正确执行此操作,以便显示数组中的所有项目,而无需使用educationalClasses[0].className...educationalClasses[1].className

1 个答案:

答案 0 :(得分:0)

从技术上讲,你不需要任何可观察到的东西。您只需要一个名为educationalClasses的成员,即一个数组(或observableArray)。您可以将原始数据包装在一个对象中,对其进行标记,然后就可以了。

如果您想更改数组并让视图显示更新,您需要observableArray。如果您想要显示各个数据项的更改,您也希望它们是可观察的。

rawData = [{
  classId: "324342",
  className: "English 101"
}, {
  classId: "231243",
  className: "Reading"
}];


viewModel = function(educationalClasses) {
  return {
    educationalClasses: educationalClasses
  };
};

ko.applyBindings(viewModel(rawData));
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<!-- ko foreach: educationalClasses -->
<div data-bind="text: className"></div>
<!--/ko-->