如何将文件内容添加到javascript函数中

时间:2014-05-30 14:43:23

标签: javascript angularjs file

我想用另一个文件的内容填充anglarjs函数的内容。可能是一个js文件,一个json,txt,我不介意。

test.js

$scope.startTest = function () {
/**
 * insert content of details-1.js
 */
}

detials-1.js

var fac = 3;
return fac;

这样最终的功能看起来像

$scope.stratTest = function() {
  var fac = 3;
  return fac;
}

我的目标是根据您选择的测试具有不同的测试程序,并从startTest函数启动特定的测试程序。

2 个答案:

答案 0 :(得分:0)

AFAIK,除非脚本内容嵌入<script>代码之间,否则无法访问<script>代码的文字内容。

您必须使用AJAX下载脚本(包含所有与之相关的CORS约束)才能访问文本内容,然后使用new Function()将该内容转换为新的函数对象,像:

$http({method: 'GET', url: 'myfunc.js'})
    .success(function(data) {
        $scope.startTest = new Function(data);
        // function may be invoked now
    });

您可能需要调整参数以确保下载的内容仅被视为纯文本。

另请注意,生成的函数除了全局变量外,还可以 no 访问其封闭范围内的任何变量。

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function

答案 1 :(得分:0)

你应该做这样的事情。

<强>细节-1.js

$scope.tests.myTest = function() {
  // Insert test here
}

<强> test.js

$scope.startTest = function() {
  // Loop through all tests
  for (var key in $scope.tests) {
    if ($scope.tests.hasOwnProperty(key)) {
      // Execute test
      $scope.tests[key]( /* args here */ );
    }
  }

  // Or you could just execute a specific test
  $scope.tests.myTest( /* args here */ )
}

注意: $scope.tests应该在某处初始化。