AngularJS $ http.get返回undefined

时间:2015-10-30 14:47:30

标签: javascript json angularjs

我正在构建一个小角度应用程序。我从这里开始:https://github.com/angular/angular-seed。我只更改了以下文件:

  1. /app/view1/view1.js     'use strict';

    angular.module('myApp.view1', ['ngRoute'])
    
    .config(['$routeProvider', function($routeProvider) {
      $routeProvider.when('/view1', {
        templateUrl: 'view1/view1.html',
        controller: 'View1Ctrl'
      });
    }])
    
    
    .controller('View1Ctrl', ['$scope', '$http',
      function ($scope, $http) {
        $http.get('/app/data/events.json').success(function(data) {
          $scope.events = data.record;
        }).error(function(data, status){
            alert("error "+data+' | '+status);
        });
    
        $scope.orderProp = 'date';
      }]);
    
  2. /app/view1/view1.html

    p>Available Events</p>
    
    <div ng-controller="EventListController">
      <ul>
        <li ng-repeat="event in events">
            <p>{{event.name}}</p>
            <div>{{event.location}}</div>
            <div>{{event.description}}</div>
            <div>{{event.date}}</div>
    
        </li>
    
      </ul>
    
     <p>Total number of events: {{events.size}}</p>
    </div>
    
  3. 显示页面时,我收到以下消息:

      

    “错误未定义|未定义”。

    我已多次检查代码,但我没有找到为什么没有加载json文件。如果我尝试在浏览器中访问http://localhost:8000/app/data/events.json,则会加载json数据。

    问题是:为什么没有加载json文件?

1 个答案:

答案 0 :(得分:2)

你应该使用如下的$ http方法:

// Simple GET request example:
$http.get('url').then(function successCallback(response) {
    // this callback will be called asynchronously
    // when the response is available
  }, function errorCallback(response) {
    // called asynchronously if an error occurs
    // or server returns response with an error status.
  });

代码datastatus中的变量未定义。

您应该像这样更新您的代码:

 $http.get('/app/data/events.json')
 .then(function successCallback(response) {
      $scope.events = data.record;
  },
  function errorCallback(response) {
      alert(response);
  });

这将解决你的问题。