Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs $scope http数据未定义_Angularjs_Angularjs Scope - Fatal编程技术网

Angularjs $scope http数据未定义

Angularjs $scope http数据未定义,angularjs,angularjs-scope,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) {

当我在函数外部声明一个变量从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>

参考文献1:{{ref1}}//错误

在服务返回结果之前,
$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

    });


});

您上面编写的代码正在执行异步调用,也就是说,当您进行http调用时,获取响应需要一些时间,但javascript代码会继续运行,因此在返回响应之前,不会调用成功回调,因此,$scope.produits直到该时间点才被定义,它给出了您的错误,因为您正在从定义它的控制器调用$scope。您应该删除该调用,或者,如果您想从其他控制器/脚本/指令访问ref1,请定义一个为您的(工厂应该可以)获取该调用的服务。如果您使用该调用解决问题或需要其他帮助,请告诉我。感谢您的回复,但有任何其他解决方案吗?谢谢,我需要在我的html页面上调用:{{produit[{{refSelected}].reference}}refSelected是我的模型中的一个变量,它会随视图而改变!我怎么做这个plz?当你从get请求得到响应时它会显示出来。是的,我的意思是{{produit[{{refSelected}}]。引用不起作用!它id为produits而不是produit。而且我在某处没有看到refSelected。你会尝试
{produits[refSelected].reference}
。记下我写的produits。如果你有它的话(我认为您没有),然后移除s。