未定义的变量AngularJS

时间:2016-10-31 10:08:03

标签: javascript angularjs

为什么我无法通过一个功能获得我的价值?我正在做测试的休息请求,所以你只能得到一个日期,并且总是告诉我未定义的值。

实施例

$http.get('app/components/home/controller/test_calendar.json').then(function(value) {
    $scope.example2 = value.data.data[0];
    //console.log($scope.example2);
});

$scope.setDayContent = function(date, content) {
    console.log($scope.example2);
}; 

我使用$ scope.example2或其他值获得值undefined。 使用我的第一个控制台,数据显示良好

3 个答案:

答案 0 :(得分:3)

我认为你在http请求(这是异步的)之前调用了setDayContent(),所以在设置$ scope.example2之前。 你可以通过取消注释'then'函数中的console.log来检查这一点,看看你是否有你的价值。

如果从html中的用户操作调用函数setDayContent()(我想,因为它在范围内) - 例如一个按钮 - 你可以禁用它直到加载数据,如下所示:< / p>

<button ng-click="setDateContent(...)" ng-disabled="!example2">

答案 1 :(得分:0)

  1. 因为$ http.get()是异步调用。
  2. 检查Web控制台(F12)和XHR呼叫响应,更改您的分配并在回调函数中调用 setDayContent

答案 2 :(得分:0)

从json获取值后需要调用$ scope.setDayContent函数,注意$ http调用是异步的

&#13;
&#13;
// Code goes here

angular
  .module('myApp', [])
  .run(function($rootScope) {
    $rootScope.title = 'myTest Page';
  })
  .controller('testController', ['$scope', '$http',
    function($scope, $http) {

      /*my JSON file test_calendar.json
      test_calendar = {
        "data": [{
          "name": "nikhil"
        }]
      }*/

      $http.get('test_calendar.json').then(function(value) {

        $scope.example2 = value.data.data[0];
        $scope.setDayContent();
      });

      $scope.setDayContent = function(date, content) {
        alert($scope.example2);
      };


    }
  ])
&#13;
<!DOCTYPE html>
<html data-ng-app="myApp">

<head>
  <link rel="stylesheet" href="style.css">
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
  <script src="script.js"></script>
</head>

<body data-ng-controller="testController">



  <p></p>
</body>

</html>
&#13;
&#13;
&#13;