【问题标题】:AnguarJS - Nested Array Empty when AccessedAngularJS - 访问时嵌套数组为空
【发布时间】:2015-02-20 22:35:57
【问题描述】:

我要疯了!

我的服务器在一个端点用一些 JSON 响应。是这样的:

[{
  key: 'value'
  nested: [{
    key: 'value'
  ]}
}]

如果我直接在浏览器中访问该端点,我可以确认我得到了这个结构正确的 JSON 对象(来自 Laravel)。

我的 AngularJS 应用程序可以正常访问它:

$http.get('endpoint').success(function(data){
    $scope.datas = data;
});

问题来了:我在 AngularJS 中的对象嵌套数组总是为空,除非我将 JSON 作为单个对象返回,而不是像这样的数组:

{datas: [{
  key: 'value'
  nested: [{
    key: 'value'
  ]}
}]}

在 AngularJS 中,我现在可以看到嵌套数组。 但请稍等,如果我尝试像

一样访问它
ng-repeat(data in datas.datas)

又是空的!

这里是 Javascript/HTML:

<div ng-repeat="order in orders">
    <div ng-repeat="message in order.messages">[[ message.value ]]</div>
</div>

msmService.controller('ordersCtrl', ['$scope', '$http',function($scope, $http){
    var refresh = function(){
        $http.get('/admin/service/orders').success(function(data){
            $scope.orders = data;
        });
    };

    refresh();
});

【问题讨论】:

  • 我认为问题在于您如何尝试从后端获取数据。使用 asynch 进行 $http.get 调用 - 调用 -> angularjs 中的承诺,只是一个建议
  • 你能提供一个jsfiddle吗?
  • 所以,你有一个带有对象的数组,看起来你需要data[0]
  • 您现在可以发布大量无效的真实 JSON 吗?

标签: angularjs angularjs-http


【解决方案1】:

我重新安排了一些东西,希望这个例子是你正在寻找的:

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    $scope.orders = {
      datas: [
        {
          key: 'value',
          nested: [
            {
              key: 'nestedValue'
            }
          ]
        }
      ]
    };
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myApp" ng-controller="MyCtrl">
  
  <div ng-repeat="order in orders.datas">
    {{order.key}}
    <div ng-repeat="message in order.nested">{{message.key}}</div>
  </div>
  
</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多