Angular.js ng-repeat 数组显示为 json

Posted

技术标签:

【中文标题】Angular.js ng-repeat 数组显示为 json【英文标题】:Angular.js ng-repeat array shows as json 【发布时间】:2017-11-01 08:11:00 【问题描述】:

我有一个问题,我试图使用 ng-repeat 在 Angularjs 中显示一个数组,但它显示了整个 json 数组,而不仅仅是里面的文本。

这是我的数组

$scope.problems = [

    
        problem: "problem1",
        works: [
            "a0",
            "a9"
        ]
    
]

这就是我想要展示它的地方

<li ng-repeat="works in problems | filter: searchCard">works</li>

现在works 标签在实时文档中显示了这一点:

"problem":"probleem1","works":["a0","a9"]

根据我看到的大多数教程和内容,它应该显示 a0 和 a9 而不是整个 json 行。

我的第二个问题可能完全不同,我如何才能正确显示文本,同时隐藏所有文本,直到有人使用输入搜索“作品”输入字段。

【问题讨论】:

对于第二个问题,您应该打开一个新线程,只包含解决第二个问题所需的代码 @DeblatonJean-Philippe 我会在未来! 【参考方案1】:

当您在 ng-repeat 上有 objects Array 时,您必须选择该对象参数;在这个示例中,我们的对象参数是 "problem""works"

同样在我们的对象中我们有 "string array" 并且字符串数组没有参数,因为我们在这个示例中直接使用它 work 是字符串数组的对象.

<li ng-repeat="item in problems | filter: problem: searchCard">
  item.problem
  <ul>
    <li ng-repeat="work in item.works">work</li>
  </ul>
</li>

【讨论】:

嘿!谢谢伙计,它按预期工作,如果可以的话,可以快速跟进问题,我可以隐藏列表直到有人使用过滤器:searchCard 我希望隐藏数组,直到用户搜索例如 A1 并且它会在文本中显示 A1 ?我在想它可能需要一个 ng-if 但我不知道怎么做。 你必须指定你正在搜索的参数 我不能再编辑我的评论了,但是这个帖子下面的用户已经回答了我的搜索问题,谢谢你们! 你必须指定你正在搜索的参数,例如你想搜索problem,使用这个filter: problem: searchCard【参考方案2】:

你可以像@Maher 提到的那样使用嵌套的 ng-repeats。另外,为了在输入searchCard 之前隐藏数据,您可以在嵌套的ui 中使用ng-if 指令。

<li ng-repeat="item in problems | filter: searchCard">
  item.problem
  <ul ng-if="searchCard">
    <li ng-repeat="work in item.works">work</li>
  </ul>
</li>

【讨论】:

我不明白你为什么添加ng-if 据我了解,OP 说how can i display the text correctly but also hide all of them until a person has used the input to search the "works" input field

以上是关于Angular.js ng-repeat 数组显示为 json的主要内容,如果未能解决你的问题,请参考以下文章

Angular.js ng-repeat 跨越多个 tr

Angular js - 如果 ng-repeat 为空则显示消息

使用Angular JS时如何在ng-repeat内的img标签中显示图像?

Angular js,未在表中显示套接字数据(ng-repeat)

ng-repeat中的Angular js条件类

Angular js(1.4)在ng-repeat中使用三元运算符来显示不同的html?