从字符串执行JavaScript代码

时间:2015-08-10 16:50:55

标签: javascript angularjs

我在服务器端创建了一个javascript代码,并通过休息请求作为字符串传递给客户端。我正在尝试执行检索到的代码。 任何帮助将不胜感激。

服务器端。 javascript代码存储在一个字符串中。

(function() {

function createChart(selector) {
    $(selector).highcharts({
        chart: {
            type: 'column',
        },
        xAxis: {
            crosshair: true,
            type: "category"
        },
        yAxis: {
            min: 0,
            title: {
                text: null
            }
        },
        series: [{

            data: datas    
        }],
    });
}

function render() {
    createChart('#chart');
}
return {
    render: render
}
}())

客户端(角度js)

    .controller('ChartController', ['$scope', 'charts',function ($scope, charts) {

        var test = charts.data;//contains the javascript code send by a rest request
        eval(test); 
        test.render(); 

}])

在客户端执行脚本返回" test.render不是函数"在chrome

有任何建议吗?

非常感谢

3 个答案:

答案 0 :(得分:2)

你可以使用eval来执行任意一段Javascript代码,但是你应该尽可能地避免这种情况。

eval是一个巨大的安全问题,因为大概是你从外部源获取该字符串并且知道他们可能尝试运行什么。 See this question了解eval为何是邪恶的更多信息。

答案 1 :(得分:1)

使用:

var result = eval(test); 
result.render(); 

因为您的test是一个字符串。 result eval(test)是一个函数。

始终不建议使用eval。但如果你真的需要它,use angular $eval instead

  

如果你想自己eval()一个Angular表达式,请使用$ eval()方法。

答案 2 :(得分:0)

你应该使用这样的eval函数:

!=

有关评估功能的更多信息,请访问此页面:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval