我想用另一个文件的内容填充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函数启动特定的测试程序。
答案 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
应该在某处初始化。