AngularJs局部变量奇怪的行为

时间:2014-12-30 16:52:17

标签: javascript angularjs

这是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]始终返回[]

我做错了吗?

1 个答案:

答案 0 :(得分:4)

因为$.getJSON是异步请求,并且在您尝试登录时仍在处理。另外,不要在Angular中使用jQuery,使用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) {

}]);