在Angular js控制器中调用外部js文件函数

时间:2014-05-16 14:14:47

标签: javascript angularjs

我有外部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.但它并没有调用这个功能。而且我也没有得到任何控制台错误。

如何实现这一目标...提前致谢。

5 个答案:

答案 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调用此文件中的任何方法。