如何在AngularJS中调试evaled JavaScript?
我有一些通过以下方法运行的任意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
eval
函数中的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);
});