我有外部js文件,它有更多功能。
我需要从角度控制器调用这些函数。
例如: external.js
...
...
function fun() {
...
...
}
...
...
控制器: acccountController.js
myApp.controller('AddAccountController',function ($scope,AddAccountLoginServices,$location,localStorageService,$compile,toaster){
....
....
$scope.getLoginForm = function(siteId,name) {
...
...
fun(); // This function from external.js file
});
...
...
});
我在acccountController.js之前导入了external.js.但它并没有调用这个功能。而且我也没有得到任何控制台错误。
如何实现这一目标...提前致谢。
答案 0 :(得分:7)
编辑:给出了错误的答案,我的不好。以下示例有效。
你的外部文件应该是这样的:
var doSomething = (function () {
"use strict";
return {
test: (function () {
return 'test';
}()),
test2: (function () {
return console.log('test 2');
})
};
}());
并在您的控制器中调用脚本函数:
console.log(doSomething.test);
或
doSomething.test2();
我也学到了一些东西,谢谢;)
答案 1 :(得分:5)
如@nilsK所述,您定义了一个self invoking function。然后通过window
对象引用它。例如 -
(function functionName(){
Do Something Here...
})();
然后,
window.functionName();
如果您使用的是AngularJS,
$window.functionName();
答案 2 :(得分:1)
我有类似的情况,我没有必要让它自我调用功能。将外部js文件包含在html中并且工作正常。
答案 3 :(得分:0)
你在哪里调用$ scope.getLoginForm()?我想你永远不会叫它。所以没有调用fun(),所以你看不到任何东西。你需要调用$ scope.getLoginForm()。两种打电话方式
在HTML <button ng-click="getLoginForm()"></button>
中
或者在Javascript中$scope.getLoginForm()
祝你好运!
答案 4 :(得分:0)
您需要创建该函数的全局实例。
添加一行:
var abc = new funcName(); 在文件末尾,您可以在控制器中使用此行(var abc = new funcName();)通过使用abc.methodName调用此文件中的任何方法。