【问题标题】:AngularJS - Conditionally display key and value if they existAngularJS - 有条件地显示键和值(如果存在)
【发布时间】:2013-09-29 15:07:05
【问题描述】:

这可能有点难以描述。

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

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

例如,提要解析此类数据:

JSON Feed 1 - “链接”内的一个“属性”

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

JSON Feed 2 - “链接”内的两个“属性”

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

我能够获得“www.link1.com”值的唯一方法是通过:

对于提要 1:

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

对于 Feed 2:

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

我正在尝试找出最好的方法:

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

2) 或者如果针对 activeTab 会更安全?比如activeTab = view2 or view4, use [link][0]else if activeTab = view1 or view3 use [link],否则如果我不想显示,就什么都不显示。

还有一个相关的问题,如果我在 view2 上,我只能在该视图上显示 [link][0] 吗?

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

【问题讨论】:

    标签: json angularjs href


    【解决方案1】:

    在您的模型控制器中,您可以重构 JSON 对象以使它们相似。两个提要中的link 的值应该是一个数组。

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

    【讨论】:

    • 嗨,MK,我有点迷路了。我通过从我的控制器内部调用的 .factory 获取 JSON 提要。从那里开始,当显示提要的视图时,我在
        的 ng-repeat 内部显示 (key,value)。有没有另一种无需重建提要的方法?
    • 很好奇,我可以在我的控制器中使用 activeTab 为元素指定 ng-class,但不能在像“ng-if="activeTab == 'view1'" 这样的 ng-if 语句中使用?我是接近ng-if 错了吗?如果是这样,我认为这可能有助于解决我在不同视图中显示特定对象的问题。
    【解决方案2】:

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

    专业人士:这是一个简单的代码,取决于正在显示的 activeTab / 视图。

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

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

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

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

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

    谢谢! 大鹏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-17
      • 2017-03-13
      • 2016-09-18
      • 2013-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 2022-08-11
      相关资源
      最近更新 更多