AngularJs 局部变量的奇怪行为

AngularJs local variable weird behavior

本文关键字:局部变量 AngularJs      更新时间:2023-09-26

这是controller中的代码

cat1=[];
$.getJSON('categories/1/', function(data) {
    cat1 = data; //returns a JSON
});
//cat2..4 are some JSONs
$scope.pictures=[cat1,cat2,cat3,cat4,cat5];

问题是似乎cat1=[]cat1=data是不同的变量,因为pictures[cat1]总是返回[]

我做错了吗?

因为$.getJSON是一个异步请求,当您尝试记录时仍在处理。另外,不要将jQuery与Angular一起使用,使用Angular的$http(这样就会触发$digest周期,一切都保持同步):

$http.get("categories/1/").success(function(data) {
    cat1 = data; //returns a JSON
    $scope.pictures=[cat1,cat2,cat3,cat4,cat5];
});

不要忘记在控制器中添加$http作为依赖项:

app.controller("myCtrl", ["$scope", "$http", function($scope, $http) {
}]);