当我调用我的 GET api/home API 端点时,我得到了一个特定的数据结构 - 有两个数组:一个用于书籍,一个用于杂志。我想在每行四个项目的网格中显示项目,但我不知道该怎么做。我还需要保持这些项目(淘汰赛)可观察 - 在我的 viewModel 中,我有:
var mapping = {
create: function(options) {
//customize at the root level.
var innerModel = ko.mapping.fromJS(options.data);
return innerModel;
}
};
var homeViewModel = ko.mapping.fromJS(homeData, mapping);
//debugger;
return homeViewModel;
在我看来,我有:
<div class="row-fluid">
<!-- ko foreach: books -->
<div class="span3">
</div>
<!-- /ko -->
<!-- ko foreach: magazines -->
<div class="span3">
</div>
<!-- /ko -->
</div>
但是我需要为每一行设置一个“行流体”,其中包含四个项目,除非它是最后一行,它可能包含少于四个项目(书籍或杂志)。现在它只是一个包含所有内容的“行流体”,所以布局都搞砸了。
我在想我可以使用元素的 $id 来确定是否应该创建一个新的行流体($id%4 == 0),但是如果我这样做,我不确定如何保持一切可观察,或者如何重构我的 viewModel。任何提示将不胜感激!
homeData 定义如下:
var homeData = {
"$id": "1",
"totalBooks": 40,
"totalMagazines": 20,
"books": [
{
"$id": "2",
"bookId": 1,
"title": "Test Title"
},
{
"$id": "3",
"bookId": 2,
"title": "Test Title"
},
{
"$id": "4",
"bookId": 3,
"title": "Test Title"
},
{
"$id": "5",
"bookId": 4,
"title": "Test Title"
},
{
"$id": "6",
"bookId": 5,
"title": "Test Title"
},
{
"$id": "7",
"bookId": 6,
"title": "Test Title"
},
{
"$id": "8",
"bookId": 7,
"title": "Test Title"
},
{
"$id": "9",
"bookId": 8,
"title": "Test Title"
}
],
"magazines": [
{
"$id": "9",
"magazineId": 1,
"title": "test magazine 0",
},
{
"$id": "10",
"magazineId": 2,
"title": "test magazine 0",
},
{
"$id": "11",
"magazineId": 3,
"title": "test magazine 0",
},
{
"$id": "12",
"magazineId": 4,
"title": "test magazine 0",
},
{
"$id": "13",
"magazineId": 5,
"title": "test magazine 0",
}]};