Javascript $scope值在$interval中不可预测
我想无限期地循环一个JSON数组(下面名为playbook) 我有以下代码:Javascript $scope值在$interval中不可预测,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我想无限期地循环一个JSON数组(下面名为playbook) 我有以下代码: $scope.loadPlaybook = function () { $http.get('/static/lib/playbook.json') .then(function (res) { $scope.data.playbook = res.data; console.log('Playbook data:', $scope.data.p
$scope.loadPlaybook = function () {
$http.get('/static/lib/playbook.json')
.then(function (res) {
$scope.data.playbook = res.data;
console.log('Playbook data:', $scope.data.playbook);
$interval(function () {
console.log('Trying to access from $interval:', $scope.data.playbook);
}, 1000);
},
function (err) {
// ..
});
};
有时,$scope.data.playbook
是在$interval
回调中定义的,大多数情况下不是这样
70%的时候,当我加载页面时,输出如下所示:
在我加载页面的30%时间内,输出如下所示:
我使用的是Angular 1.5.1和Google Chrome。这可能无法直接回答您的问题,但据我所知,请注意,
console.log()
显示了对象在运行时作为参数传递的预览,然后当您单击控制台中显示的预览时,它将使用当前对象状态进行更新。如果希望在某个时间查看对象的状态,可以console.log(angular.copy(sourceObj))
。您可以将这两者结合起来检查$scope.data在最初设置后是否被其他地方覆盖
希望有帮助 这可能无法直接回答您的问题,但据我所知,请注意,
console.log()
在对象运行时显示作为参数传递的对象的预览,然后当您单击控制台中显示的预览时,该对象将更新为当前对象状态。如果希望在某个时间查看对象的状态,可以console.log(angular.copy(sourceObj))
。您可以将这两者结合起来检查$scope.data在最初设置后是否被其他地方覆盖
希望有帮助 尝试记录$scope.data并展开,然后展开数据,查看您拥有所有数据。尝试记录$scope.data并展开,然后展开数据,查看您拥有所有数据。