Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在AngularJS中调试evaled JavaScript?_Javascript_Angularjs_Google Chrome_Eval_Source Maps - Fatal编程技术网

如何在AngularJS中调试evaled JavaScript?

如何在AngularJS中调试evaled JavaScript?,javascript,angularjs,google-chrome,eval,source-maps,Javascript,Angularjs,Google Chrome,Eval,Source Maps,我有一些通过以下方法运行的任意javascript代码: 通过ajax调用将其下载到客户端浏览器 将生成的代码字符串传递到javascripteval函数中 注意:我无法通过将其文件URL添加到的src属性来下载/运行代码,因为代码必须在特定范围内运行。 我想在Google Chrome中调试这段代码。我可以使用普通Javascript来实现这一点,但当我使用AngularJS时就不行了。我怎样才能解决这个问题 示例1(纯JS,我可以选择检查code.JS): 结果: 演示: 示例2(Angul

我有一些通过以下方法运行的任意javascript代码:

  • 通过ajax调用将其下载到客户端浏览器
  • 将生成的代码字符串传递到javascript
    eval
    函数中
  • 注意:我无法通过将其文件URL添加到
    src
    属性来下载/运行代码,因为代码必须在特定范围内运行。

    我想在Google Chrome中调试这段代码。我可以使用普通Javascript来实现这一点,但当我使用AngularJS时就不行了。我怎样才能解决这个问题

    示例1(纯JS,我可以选择检查
    code.JS
    ):

    结果:
    演示:

    示例2(AngularJS,我没有选择检查
    code.js
    ):

    结果:

    演示:

    使用命名函数而不是匿名函数。例如:

    var codeToRun=“var a=1;console.log(a)/@sourceURL=foo.js”;
    函数evaler()
    {
    eval(codeToRun);
    }
    角度.module(“foo”,[]).run(evaler)
    
    
    
    也许可以试试,老实说,如果我是你,我会改变设计。为什么它需要在那个特定的范围内运行?让它不是这样。你可以在你的控制器中调用一个全局函数,然后从作用域中传入任何你需要的参数。下载的JS包含一个复杂数组(数组包含函数和对象等),我需要将这个数组设置为当前作用域中的一个变量,因为这个复杂的数组是私有的(不适用于范围之外的代码的其他部分)。比如,我知道人们不回答你的问题很烦人,但是如果你的问题以“我正在通过ajax下载脚本文件并对其求值,以便它可以访问特定上下文中的变量”开头然后是时候停下来重新思考你的设计了。
    var codeToRun = ""
    +"var a = 1;\n"
    +"var b = 2;\n"
    +"This line will fail\n"
    +"//@ sourceURL=code.js";
    
    eval(codeToRun);
    
    var codeToRun = ""
    +"var a = 1;\n"
    +"var b = 2;\n"
    +"This line will fail\n"
    +"//@ sourceURL=code.js";
    
    angular.module("myApp", [])
    .controller("myController", function($scope) {
        eval(codeToRun);
    });