【问题标题】:fetching json data in the controller在控制器中获取 json 数据
【发布时间】:2015-07-07 16:03:01
【问题描述】:

使用命令 console.log($scope.data) 我可以看到我的 json 文件。我还可以使用<div ng-repeat="item in data"> 看到视图中的所有项目,但console.log($scope.data[0])console.log($scope.data[0].name) 返回错误"undefined"console.log($scope.data.length) 返回0。如何访问控制器中的项目。
编辑 $scope.data 包含一个 json 文件。 $scope.data = service.query(); 看起来像
我不明白为什么 ng-repeat 工作时长度返回 0

【问题讨论】:

  • 你能添加你用 console.log($scope.data) 得到的输出吗?
  • 我们需要知道你的数据结构的格式。请发布json等
  • 你的 json 是什么样的?
  • 你正试图像一个数组一样访问它,而我认为它不是。在看到 JSON 之前,我不能说太多。
  • @JonathonBlok,事实上 user567 可以ng-repeat 但不能通过索引访问它,这让我相信它是一个对象。

标签: javascript arrays json angularjs


【解决方案1】:

您似乎已经从问题中剥离了所有相关细节(例如service.query 实现)。

这个plunker 可能会对正在发生的事情有所了解。

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

app.factory('data', function ($timeout) {
  var data = [];

  return {
    query: function () {
      $timeout(function () {
        data.push(1, 2, 3);
      }, 1000);

      setTimeout(function () {
        data.push('Oops, ng-repeat is unconscious of this one');
      }, 2000);

      return data;
    }
  };
});

app.controller('AppController', function($scope, data) {
  $scope.data = {
    agile: [1, 2, 3],
    lazy: data.query()
  };

  $scope.$watch('data.lazy', function (newVal, oldVal) {
    if (newVal === oldVal) return;
    console.log($scope.data.lazy[0]);
  }, true);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多