AngularJS中的console.log在作用域函数后执行

Sky*_*ude 2 javascript angularjs

我是Angular JS的新手,我有一个基本的Angular App,只需设置一个范围对象,设置一些函数来初始化/创建范围对象.当我在我的函数中使用console.log时,它会报告在scope函数末尾设置的$ scope值,而不是console.log时的scope对象的值.我确定这是一个基本的执行顺序问题,我将不胜感激任何解释或帮助解决这个问题.

这是角度代码:

var module = angular.module('my-app', []);

function MainController($scope)
{
    $scope.testDict = {};

    $scope.createNewTestDict = function(){
        $scope.testDict.test1 = {1: false, 2: false, 3: false}
    }

    $scope.initializeDict = function(){
        $scope.createNewTestDict();
        console.log($scope.testDict);
        $scope.testDict.test1 = {1: true, 2: true, 3: true}
    }

    $scope.initializeDict();
}
Run Code Online (Sandbox Code Playgroud)

JSFiddle这里:http://jsfiddle.net/U6ZKr/7/

因此,您会注意到日志时实际范围对象中的console.log应该都是false,但它们都是在console.log之后设置的全部true.

在此先感谢您的帮助!

Edm*_*ake 8

由于$ scope.testDict作为对console.log的引用传递,并且它是异步计算的,因此该值可能不准确.

一种替代方法是使用console.log(JSON.stringify($scope.testDict));以查看正确的结果.