$ scope http数据未定义

时间:2015-05-27 10:05:08

标签: angularjs angularjs-scope

当我声明一个变量从我的函数外部的json文件数据中获取一个元素时,我有一个错误,有人可以解释为什么PLZ?

produit.json:

[{
"id" : 1,
"reference": "AA"
},
{
"id" : 2,
"reference": "BB"
}]

angulars.js:

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

    app.controller('MainCtrl', function($scope,$http,$log) {

    $http.get('produits.json').success(function (data) {

        $scope.produits = data;
        $scope.ref1= $scope.produits[0].reference; //OK

    });

    $scope.ref1= $scope.produits[0].reference; //ERROR: undefined produits
});

的index.html:

<body ng-app="myApp">
    <div ng-controller="MainCtrl">
       Reférence 1 :  {{ ref1 }}     // ERROR
   </div>

</body>

2 个答案:

答案 0 :(得分:1)

在服务返回结果之前,尚未定义$scope.produits。即使它是,但它不会有[0]元素。

所以我认为最好的方法是不添加代码的最后一行,只是等待服务返回结果:

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

    app.controller('MainCtrl', function($scope,$http,$log) {

        $http.get('produits.json').success(function (data) {

            $scope.produits = data;
            $scope.ref1= $scope.produits[0].reference; //OK

    });


});

答案 1 :(得分:0)

您编写的代码正在执行异步调用,也就是说,当您进行http调用时,需要一些时间来获取响应,但javascript代码会继续运行,因此直到返回响应尚未调用成功回调,因此直到那个时间点才定义$ scope.produits