Arrays 使用knockout从数组中提取信息
我目前有一个数组被传递到我的函数中,我想从数组中提取信息,以便在页面上显示它 这就是阵列的外观:Arrays 使用knockout从数组中提取信息,arrays,knockout.js,Arrays,Knockout.js,我目前有一个数组被传递到我的函数中,我想从数组中提取信息,以便在页面上显示它 这就是阵列的外观: EducationalClasses:[object, object] first object contains: classId: "324342", className: "English 101" second object contains: classId: "231243", className: "Reading" 当我执行Educati
EducationalClasses:[object, object]
first object contains:
classId: "324342",
className: "English 101"
second object contains:
classId: "231243",
className: "Reading"
当我执行EducationalClass[0]时,我得到的结果与第一个对象中的结果相同。我想创建某种循环,以便在我的查看页面中:
<!-- ko foreach: educationalClasses -->
<div data-bind="text: className></div>
<!--/ko-->
我如何才能正确地执行此操作,以便在不必使用
EducationalClass[0]的情况下显示数组中的所有项。className…EducationalClass[1]。className
从技术上讲,您在此处执行的操作不需要任何可观察项。您只需要viewmodel有一个名为educationalClasses
的成员,该成员是一个数组(或observableArray)。您只需将原始数据包装到对象中,标记它,然后它就可以运行了
如果要更改阵列并让视图显示更新,则需要一个observableArray
。如果您希望显示对单个数据项的更改,那么您也希望它们是可观察的
rawData=[{
classId:“324342”,
课程名称:“英语101”
}, {
classId:“231243”,
类名:“阅读”
}];
viewModel=函数(教育类){
返回{
教育类:教育类
};
};
应用绑定(视图模型(rawData))代码>
从技术上讲,您在这里所做的事情不需要任何可观察的东西。您只需要viewmodel有一个名为educationalClasses
的成员,该成员是一个数组(或observableArray)。您只需将原始数据包装到对象中,标记它,然后它就可以运行了
如果要更改阵列并让视图显示更新,则需要一个observableArray
。如果您希望显示对单个数据项的更改,那么您也希望它们是可观察的
rawData=[{
classId:“324342”,
课程名称:“英语101”
}, {
classId:“231243”,
类名:“阅读”
}];
viewModel=函数(教育类){
返回{
教育类:教育类
};
};
应用绑定(视图模型(rawData))代码>
这看起来很容易理解,感谢您的帮助。但是我不确定我是否遗漏了什么,但是当我这样做时,我得到了一个控制台错误,说明className
没有定义。@072我猜你遗漏了什么,那么。:)你为什么不做一把小提琴,从我上面的东西开始,然后一直玩到什么东西不起作用。我想这与我的信息被填充的方式有关。我更新了JSFIDLE,使其显示了从我的终端传入的数据的外观。这里是JSFIDLE链接:首先,您的数据需要是一个数组。您需要重新设置格式,使其与预期格式匹配。您的预期格式也发生了变化:您需要嵌套数组。所以:这看起来很容易理解,谢谢你的帮助。但是我不确定我是否遗漏了什么,但是当我这样做时,我得到了一个控制台错误,说明className
没有定义。@072我猜你遗漏了什么,那么。:)你为什么不做一把小提琴,从我上面的东西开始,然后一直玩到什么东西不起作用。我想这与我的信息被填充的方式有关。我更新了JSFIDLE,使其显示了从我的终端传入的数据的外观。这里是JSFIDLE链接:首先,您的数据需要是一个数组。您需要重新设置格式,使其与预期格式匹配。您的预期格式也发生了变化:您需要嵌套数组。因此:
viewModel = function(educationalClasses){
....
self.className= ko.observable(educationalClasses.className); // what i want
}