【问题标题】:ngRepeat iterate with array objects in angularjsngRepeat 使用 angularjs 中的数组对象进行迭代
【发布时间】:2018-07-10 15:04:01
【问题描述】:

我正在尝试弄清楚如何使用 ngrepeat 迭代数组

如果我有如下数据数组

{
  "People": [{
      "name": "Andrew Amernante",
      "rating": 3,
    },
    {
      "name": "Frank Wang",
      "rating": 5,
    },
    {
      "name": "Chang Wang",
      "rating": 5,
    }
  ]
}

在Controller中,我有这些代码sn-ps。

app.controller('mainController', function($scope, $http) {
  $http.get('people.json').
  then(function onSuccess(response) {
    console.log(response);
    $scope.peoples = response.data;

  }).
  catch(function onError(response) {
    console.log(response);
  });
});

而且,我想迭代数组并在列表中显示三个名称。

<ul class="nav">
  <li ng-repeat="obj.peoples track by $index">
    <a href="#/">{{obj.name}}</a>
  </li>
</ul>

但是,我无法获得名称,对此有什么想法吗?

仅供参考 - 我在这里使用 Angular 1.6.5 版本。

Plunkr 代码在这里

【问题讨论】:

    标签: javascript arrays angularjs angular1.6


    【解决方案1】:

    您需要修复您的 HTML 代码。

    应该是ng-repeat="obj in peoples.People track by $index",而不是ng-repeat="obj.peoples track by $index"

    参见下面的演示。

    angular.module('app', [])
      .controller('mainController', function($scope, $http) {
        // mocked, equivalente to `$scope.peoples = response.data`
        $scope.peoples = {
          "People": [{
              "name": "Andrew Amernante",
              "rating": 3,
            },
            {
              "name": "Frank Wang",
              "rating": 5,
            },
            {
              "name": "Chang Wang",
              "rating": 5,
            }
          ]
        };
      });
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    
    <div ng-app='app' ng-controller='mainController'>
      <ul class="nav">
        <li ng-repeat="obj in peoples.People track by $index">
          <a href="#/">{{obj.name}}</a>
        </li>
      </ul>
    
    </div>

    【讨论】:

    • 关于如何在这里使用单页应用程序的任何想法?如果我们有不同的动态列表集
    • @UI_Dev 您已经在这里使用了单页应用程序(使用 Angular),不是吗? “如果我们有不同的动态列表集”是什么意思?
    • plnkr.co/edit/iheQU9mYXZwyHVlI6MeP?p=preview 这是我更新的 plunkr,我无法在模板之间切换
    • @UI_Dev 我认为您正在尝试错误地使用ng-view。也许您想阅读ngView documentation 以了解如何正确使用它?
    • @UI_Dev 这是一个全新的问题,您可能想在单独的问题中提出。这样,SO 上的更多人可以为您提供帮助,因为我的答案中的这个帖子只有您和我才能看到。
    【解决方案2】:

    它是你 script.js 中的人,你在 html 中使用 obj

    $http.get('people.json').
            then(function onSuccess(response) {
                console.log(response);
                $scope.peoples = response.data;
    
            }).
    

    把你的html改成下面的代码,

    <li class="active" ng-repeat="item in peoples.People">
           <a href="#/">{{item.name}}<span class="glyphicon glyphicon-play"></span></a>
     </li>
    

    【讨论】:

    • 这也可以
  • @UI_Dev ,感谢您的回复,这是正确的答案吗?。
  • 在这种情况下,如何在这里使用单页应用程序?如果我们有不同的动态列表集
  • 如果我们在所有动态列表中都有相同的键,我们可以使用这个迭代
  • 【解决方案3】:

    两件事,在 javscript 中

     $scope.peoples = response.data.People;
    

    在 ng-repeat 中应该是

    ng-repeat="people in peoples track by $index"
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签