我正在学习Angular并尝试使用自定义指令创建包含来自我的git存储库的数据的大表。但我不知道如何实现它,因为不同导师和书籍中的示例通常很简单,但我从$ http收到的对象非常大,并且嵌套对象。这是我的回购: https://api.github.com/users/jotunnjs/repos
我在做什么:
scope: {data: "="}
)。 比我有问题。我用
" templateUrl
"我在哪里创建一个表。我当然认为那样做
这样的事情并不正常:
<table> <thead> <tr> <td>ID</td> <td>Name</td> <td>...</td> // here would be a lot of tag and it's difficult to maintain </tr> </thead> <tbody> <tr ng-repeat="item in data"> <td>{{item.id}}</td> <td>{{item.name}}</td> <td>{{item...}}</td> </tr> </tbody> </table>
Couse它将成为标签的looooot
我几乎可以肯定我需要这样做:
<table>
<thead>
<tr ng-repeat="(key, val) in item in data">
<td>{{key}}</td>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in data">
<td ng-repeat="i in item">{{i}}</td>
</tr>
</tbody>
</table>
但是我如何设置<td>
中的日期类型?因为在列表中,您可以找到类型,例如链接,图像,电子邮件和字符串。另外我如何处理嵌套对象?
P.S。我知道这个问题很大而且很难,但是如果有人能帮我理解这种情况那就太棒了!请提供一些我可以阅读的例子或材料。感谢
答案 0 :(得分:0)
我可以想到两个解决方案,第一个是将数据类型作为值的一部分。因此,每个属性都包含一个复杂的对象,类似于{value:&#34; realValue&#34;,type:&#34; stringOrTypeOfYourValue&#34;}。然后,您可以根据其类型修改您的值。
<tr ng-repeat="item in data">
<td ng-repeat="i in item">
<span ng-show="i.type === Date"> {{i.value |date:"dd/MM/yyyy"}}</span>
<span ng-show="i.type !== Date"> {{i.value}}</span>
</td>
</tr>
另一种解决方案是创建一个通用过滤器,并尝试了解过滤器中值的类型,并根据您的类型应用相应的过滤器。例如:
yourApp.filter('formatValue', [function () {
return function (value, dateFormat) {
if (value instanceof Date) {
return $filter("date")(value, dateFormat);
} //You may add other conditions to handle such as formatting numbers etc.
else {
return value;
}
};
}])