angularjs - 在 AngularJS 的选项卡上显示多个数据点的问题
问题描述
我对 AngularJS 还是很陌生,所以为我遇到的问题寻找一些指导;我有一个 JSON 文件存储,我已成功从中读取数据,格式为:
{
"sites": [
{
"name": "S001",
"description": "Joes's 1"
},
{
"name": "S002",
"description": "Fred"
},
{
"name": "S003",
"description": "John"
},
... etc ...
{
"name": "S020",
"description": "Mary"
}
]
}
我正在尝试使用该md-tabs
指令循环遍历它,在单个选项卡中一次显示 10 个项目;我已经使用下面的代码为每个项目工作(对不起,混乱的工作):
<md-tabs md-selected="selectedIndex" style="border: 1px solid red; background-color: white; color: black;">
<md-tab ng-repeat="site in sites.sites" md-on-select="onTabSelected(tab)">
<md-tab-label>
Tab {{ site.name }}
</md-tab-label>
<md-tab-body>
{{ site.description }}
<p>Length of Array: {{sites.sites.length}}</p>
<p>Pages: {{ sites.sites.length / pageSize }} - ({{ currentPage }} of {{((4.9 + sites.sites.length) / pageSize | number:0)*1 }})</p>
</md-tab-body>
</md-tab>
</md-tabs>
但是我正在努力寻找如何使标签读取“Tab1”、“Tab2”并且每页仅显示 10 条信息 - 这可能使用标签,还是我在错误的树上吠叫?
感谢。
解决方案
一般规则是以这种方式制作模型,共同视图尽可能简单。所以你想要一些带有网站的标签,好的:tabs: [{sites: [...]}, {sites: [...]}]
填写控制器:
vm.tabs = [];
let currentTab = null;
sites.forEach(site => {
if (!currentTab || currentTab.sites.length > 9) {
currentTab = {sites: []};
vm.tabs.push(currentTab);
}
currentTab.sites.push(site);
})
现在你的html:
<md-tabs md-selected="selectedIndex">
<md-tab ng-repeat="tab in tabs" md-on-select="onTabSelected(tab)">
<md-tab-body>
<div ng-repeat="site in tab.sites">{{ site.description }}</div>
...
推荐阅读
- html - 显示中的 Flex 项目:表格,在 Firefox 中不占用高度,在 chrome 上按预期工作正常
- r - R - 按行查找第一个、第二个和第三个最大值
- c# - asp.net core 默认 ErrorMessageResourceName 和 Type
- javascript - 只允许同一用户跨浏览器/设备进行地理定位一次,这可能吗?而不是单独要求许可
- sql - 检查列表中的日期以获取下一个日期
- react-native - SublimeLinter 无法识别“jest/globals”环境
- java - 无法解决:Android Studio 中的 com.android.support:design:26.2.0 错误
- javascript - 如何向 WordPress 块编辑器工具栏添加额外的按钮
- git - 复制一个 git 存储库并分成两部分
- python - 将脚本连接/处理到 PySimpleGUI 按钮