AngularJS - 有条件地显示键和值(如果存在)



这可能有点令人困惑。

基本上,我正在解析多个外部 JSON 提要,这些提要根据显示的"活动选项卡"显示在不同的视图中。它们都共享相同的部分模板,因此它们看起来完全相同,只是内容不同。

我现在面临的问题是,在某些提要中,一些键放在数组中,而另一些则没有。

例如,源解析此类数据:

JSON 源 1 - "链接"中的一个"属性">

"link":{
  "attributes":{
    "href":"www.link1.com"
  }
}

JSON 源 2 - "链接"中的两个"属性">

"link":[
  {
    "attributes":{
      "href":"www.link1.com"
    }
  },
  {
    "attributes":{
      "href":"www.link2.com"
    }
  }
]

我能够获得值"www.link1.com"的唯一方法是:

对于源 1:

<a href="{{item['link']['attributes']['href']}}">link1</a>

对于源 2:

<a href="{{item['link'][0]['attributes']['href']}}">link1</a>

我试图弄清楚什么是最好的方法:

1( 如果link[0]存在 - 显示它,否则如果[link]存在,则显示它。

2(或者,如果定位活动选项卡会更安全?例如,如果activeTab = view2 or view4, use [link][0]else if activeTab = view1 or view3 use [link],否则如果我不希望显示它,则不显示任何内容。

也是一个相关的问题,如果我在视图2上,我可以只在该视图上显示[link][0]吗?

任何反馈将不胜感激。谢谢!

在模型控制器中,您可以重新构造 JSON 对象以使它们相似。两个源中的link值应为数组。

然后在模板中,您可以简单地使用 ngRepeat 从数组内部获取项目。

好的 - 所以我找到了上述问题之一的解决方案:"如何在特定视图中仅显示 [link][0]">

优点:这是一个简单的代码,取决于正在显示的活动选项卡/视图。

缺点(?(:因为我真的是 AngularJS 的新手 - 不确定这是否是最佳解决方案。

基本上:根据当前显示的 ng 视图,将显示特定的 JSON 对象,例如:

<a ng-show="activeTab == 'view1' || activeTab == 'view3'" ng-href="{{item['link'][0]['attributes']['href']}}">
  <h6>Link1 from Feed2</h6>
</a>

尽管主要问题仍未解决:如果存在一个而不是另一个,如何交换/切换 JSON 对象(键、值(。我仍然肯定在努力寻找解决方案,尽管仍然感谢任何帮助。

请让我知道您的想法,或者我如何改进问题的解决方案!

谢谢!大鹏。

最新更新