在自定义的directive的controller里面,用$http获取了一个game.json,然后赋值给这个directive的一个成员变量。出错了。
在debug中看到获取的game.json文件是对的,但查看$scope下面该directive下被赋值的变量,是一个空数组。
$http.get('/game.json').success(function (data) {
console.log('enter success callback');
game.backup = data;//backup 不与前端绑定,只备份数据
game.reload();//得到数据后给game赋初值
});
上面的console.log没有在控制台打印出来,也就是没能进入success回调函数。
其中game.reload()是用来把game.backup拷贝一份给game.values的,game.values也就是最下面一张图里面为空的那个数组
this.reload = function (n) {
if(n===undefined){
game.values = angular.copy(game.backup);//得到数据后给game赋初值
console.log("updated all levels");
}
else{
game.values[n] = angular.copy(game.backup[n]);
console.log("updated level "+n);
}
};
看请求的返回(下图),似乎没有错。
为什么没有进入success回调函数?
$scope里面values数组为空数组,压根就没有出现game.backup这个变量。
报错处的堆栈信息为:
(anonymous function)
$get
processQueue
(anonymous function)
$get.Scope.$eval
$get.Scope.$digest
$get.Scope.$apply
done
completeRequest
requestLoaded
出错提示为
加上error回调函数之后,发现执行了error回调,获取的四个参数为