AngularJS最佳实践:基于对象数据“更改模板”的最佳方法是什么?

时间:2015-06-29 03:14:23

标签: javascript angularjs

公平警告:Angular新手在这里。

我正在使用ng-repeat循环遍历一个对象数组,并且数组中有4-5种不同类型的数据。

它们都具有相同的基本格式,但每种类型都会有一些与之关联的特定类型的元数据。

坦率地说,如果没有很多ng-if陈述,我不知道如何处理这个问题。

我们目前正在使用具有多种模板类型的Mustache(我希望摆脱许多重复的代码)但是想要使用Angular来处理这个问题。

这是一个非常愚蠢的例子,说明我的对象可能是什么样的。

[{
  "title": "title1",
  "by": 1,
  "text": "First post EVER!"
},
{
  "title": "title2",
  "by": 12,
  "text": "2nd post",
  "meta_data": {
    "tag": 5,
    "img": "http://link.com/img.jpg"
  }
},
{
  "title": "title3",
  "by": 104,
  "text": "3rd",
  "meta_data": {
    "section": 22,
    "video": "http://link.com/img.jpg"
  }
}]

这里有更多的字段,但我不确定处理这个问题的方法是什么。

也许自定义指令如<div activity-image /><div activity-video />如果不存在则不返回任何内容?

提前感谢您的帮助。对于像这样的事情的最佳实践,我一无所知。

1 个答案:

答案 0 :(得分:1)

您可以使用ngInclude处理多个HTML模板并减少重复代码。首先为不同模板类型的公共部分创建模板,如下面的

commonHeader.html

<h1>{{obj.title2}}</h2>
<div>{{obj.text}}</div>

然后您可以创建模板

<div ng-include="commonHeader.html""></div>
<div>depend on the type</div>

最后在ng-repeat循环中,根据数据类型包含不同的模板。