Angularjs $scope http数据未定义
当我在函数外部声明一个变量从json文件的数据中获取一个元素时,我出现了一个错误,有人可以解释为什么是plz produit.json: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) {
[{
"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。