javascript - AngularJS 中的 console.log 在范围函数之后执行

标签 javascript angularjs

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

这是 Angular 代码:

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();
}

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

因此您会注意到,在记录日志时实际作用域对象中的 console.log 应该是所有值 false,但它们都是在 console.log 之后设置的所有 true。

预先感谢您的帮助!

最佳答案

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

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

关于javascript - AngularJS 中的 console.log 在范围函数之后执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19601222/

相关文章:

php - 在ckeditor中集成Javascript虚拟键盘插件

javascript - 在这种情况下如何使用 ng-mouseenter 删除类

javascript - 如何在Joi中添加自定义验证器功能?

第一页加载时或重新加载一定次数后的 JavaScript,无法用 "clear caches"重现

javascript - $window.innerHeight 在 chrome 和 firefox 中返回不同的值

javascript - 在 Angular 中进行异步 ajax 调用

javascript - 如何让指令模板保留元素内容?

angularjs - 如何存储要使用 Firebase 简单登录电子邮件/密码进行身份验证的用户?

javascript - ExpressJS 和客户端中的 i18next 模块

javascript - 从 Javascript 写入 HTML 文件