Angularjs 在ng repeat中循环json对象

Angularjs 在ng repeat中循环json对象,angularjs,Angularjs,我有一个JSON对象,其中包含从RESTAPI获得的{“id”:1,“name”:“name1”},我希望使用ng repeat在列表中显示name属性。以下是我在页面中的内容: {{p.name}} 它不显示上面代码的任何内容,当我将{{p.name}}更改为{Names}时,它会显示{“id”:1,“name”:“name1”}。迭代并获取每个属性?尝试 {{Names.name}} 您可以迭代对象数组,但如果只有一个对象,就没有必要了。 如果您有以下内容,则需要迭代: Nam

我有一个JSON对象,其中包含从RESTAPI获得的
{“id”:1,“name”:“name1”}
,我希望使用ng repeat在列表中显示name属性。以下是我在页面中的内容:


{{p.name}}

它不显示上面代码的任何内容,当我将
{{p.name}}
更改为
{Names}
时,它会显示
{“id”:1,“name”:“name1”}
。迭代并获取每个属性?

尝试

{{Names.name}}
您可以迭代对象数组,但如果只有一个对象,就没有必要了。 如果您有以下内容,则需要迭代:

Names = [{"id":1,"name":"name1"}, {"id":2,"name":"name2"}, {"id":3,"name":"name3"}, ...]
在本例中,通过执行{p.name},ng repeat=“p in Names”可以正常工作

希望它有帮助

试试看

{{Names.name}}
您可以迭代对象数组,但如果只有一个对象,就没有必要了。 如果您有以下内容,则需要迭代:

Names = [{"id":1,"name":"name1"}, {"id":2,"name":"name2"}, {"id":3,"name":"name3"}, ...]
在本例中,通过执行{p.name},ng repeat=“p in Names”可以正常工作


希望有帮助

ng repeat用于列表(重复内容),如:

如果您只有{id:1,“name”:“name1”}请不要重复ng,只需使用{{Names.name}}

<ion-content ng-controller="testPage">
   <ion-list>                                           
     <ion-item>
            {{Names.name}}
     </ion-item> 
  </ion-list>
</ion-content>

ng repeat用于列表(重复内容),例如:

如果您只有{id:1,“name”:“name1”}请不要重复ng,只需使用{{Names.name}}

<ion-content ng-controller="testPage">
   <ion-list>                                           
     <ion-item>
            {{Names.name}}
     </ion-item> 
  </ion-list>
</ion-content>
您的JSON对象是这样的数组还是仅仅是一个对象

如果它只是一个对象,
ng repeat
将无法迭代

你可以看到一个例子


回答以下来自用户3514822的问题

在下面的注释中,
JSON.parse
可以返回一个对象数组,也可以只返回一个对象

var response = { "userlist": [ "{\"id\":1,\"name\":\"alex\"}" ] };

$scope.Names=JSON.parse( response.userlist );

if( Object.prototype.toString.call( $scope.Names ) !== '[object Array]' ) {
    $scope.Names = [ $scope.Names ];
}
执行此操作后,
ng repeat
应该可以正常工作,因为您已经定义了
$scope。name
应该始终是一个数组。

您的JSON对象是这样的数组还是仅仅是一个对象

如果它只是一个对象,
ng repeat
将无法迭代

你可以看到一个例子


回答以下来自用户3514822的问题

在下面的注释中,
JSON.parse
可以返回一个对象数组,也可以只返回一个对象

var response = { "userlist": [ "{\"id\":1,\"name\":\"alex\"}" ] };

$scope.Names=JSON.parse( response.userlist );

if( Object.prototype.toString.call( $scope.Names ) !== '[object Array]' ) {
    $scope.Names = [ $scope.Names ];
}


完成此操作后,
ng repeat
应该可以工作,因为您已经定义为
$scope.Names
应该始终是一个数组。

如果我放置{Names.name},它会显示两次name,因为它重复了两次。对象是这样的:Names={“id”:1,“name”:“name1”}与您在帖子中显示的方式不同。您处理的是单个对象,因此无需迭代。但在rest api响应中,我得到,{“userlist”:[“{“id\”:1,\“name\”:\“name1\”}从现在到将来,如果有更多用户,如果有更多用户,我将得到{“userlist”:[“{\“id\”:1,“name\”:“name1\”,“{\“id\”:1,“name\”:“name2\”}],在这种情况下,它将只显示一个用户名。根据上述响应,使用JSON.parse(response)解析响应是否错误?在这种情况下,您的ng repeat应该是:ng repeat=“userlist中的用户”,然后您可以执行{user.name}和/或{user.id}。此外,我认为您应该编辑您的问题,以反映从服务器返回的真实数据,因为这将有助于更好地理解您的案例:-)如果我放置{Names.name},它会显示两次名称,因为它重复了两次。对象类似于以下名称={“id”:1,“name”:“name1”}但在rest api响应中,我得到了,{“userlist”:[“{\“id\”:1,\“name\”:\“name1\”}}从现在到将来,如果有更多的用户,如果有更多的用户,我会得到{“userlist”:[“{\”id\”:1,\“name\”:“name1\”,{“id\”:1,\“name\”,“{id\”\“:\”name2\“}”],在这种情况下,它将只显示一个用户名。根据上述响应,使用JSON.parse(response)解析响应是否错误?在这种情况下,您的ng repeat应该是:ng repeat=“userlist中的用户”,然后您可以执行{user.name}和/或{user.id}。另外,我认为您应该编辑您的问题,以反映从服务器返回的真实数据,因为这将有助于更好地理解您的案例:-)感谢您的回答,它可以工作,但在某些情况下我可能会得到更多的名称。如果您得到更多的名称,它将是一个数组,而不是使用ng repeat。如果您只返回一个元素,则可以将其放入列表中,然后然后重复ng。我已经更新了我的答案api的真实响应数据是{“userlist”:[“{\“id\”:1,\“name\”:\“alex\”}]},我可能会在该列表中获得更多用户。我正在解析它,如下所示,$scope.Names=JSON.parse(response.userlist);我在ng repeat中使用Names变量。感谢您的响应,它可以工作,但在某些情况下我可能会得到更多的名称。如果您得到更多的名称,它将是一个数组,而不是使用ng repeat。如果您只返回一个元素,您可以将其放入列表中,然后对其执行ng repeat。我已经更新了我的回答api的真实响应数据是{“userlist”:[“{\“id\”:1,\“name\”:\“alex\”}“]},我可能会在该列表中获得更多用户。我对它进行如下解析,$scope.Names=JSON.parse(response.userlist);我在ng repeat中使用Names变量。是的,它的非数组类似于$scope.NamesNonArray={“id”:1,“name”:“Foo”};如何处理它?我已经更新了我的plunker,并解释了每个阶段发生的情况。它还应该向您展示如何只处理一个不是数组的对象。api的实际响应数据是{“userlist”:[“{“id\”:1,\“name\”:“alex\”}]},我可能会在该列表中获得更多的用户。我将对其进行如下解析,$scope.Names=JSON.parse(response.userlist);并在ng repeat中使用Names变量。是的,您是对的,它的非数组类似于$scope.NamesNonArray={“id”:1,“name”:“Foo”},我该如何处理呢?我已经更新了我的plunker,并解释了每个阶段的情况