2014-05-16 240 views
18

我有外部js文件,它有更多的功能。在Angular js控制器中调用外部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。但它并没有调用这个函数。而且我还没有得到任何控制台错误。

如何实现这一点...在此先感谢。

+1

你是如何在角度模块中导入外部js的? – Shikhar

回答

7

编辑:给出了错误的答案,我的不好。下面的例子工作。

你的外部文件应该是这样的:

var doSomething = (function() { 
    "use strict"; 
    return { 
     test: (function() { 
     return 'test'; 
     }()), 
     test2: (function() { 
     return console.log('test 2'); 
     }) 
    }; 
}()); 

,并在你的控制器,你打电话给你的脚本功能:

console.log(doSomething.test); 

doSomething.test2(); 

我学到的东西太多,谢谢; )

+0

感谢您的回复。我是角js的新手。如果我把var external = require('assets/plugins/form-generation/js/external.js');在控制器意味着,我得到这个控制台错误“ReferenceError:需求未定义”。 – user2731645

+0

对不起,要求只有node.js ...我的错误。 ...仍在尝试;) – nilsK

+0

@ user2731645编辑我的文章 – nilsK

0

你在哪里调用$ scope.getLoginForm()?.我认为你永远不会这么称呼它。所以fun()不被调用,所以你没有看到任何东西。你需要调用$ scope.getLoginForm()。双向拨打电话 在HTML <button ng-click="getLoginForm()"></button> 或使用Javascript $scope.getLoginForm() 祝你好运!

5

正如@nilsK所述,您定义了一个self invoking function。然后通过window对象引用它。例如 -

(function functionName(){ 
    Do Something Here... 
})(); 

然后,

window.functionName(); 

如果您正在使用AngularJS,

$window.functionName(); 
+0

$窗口应注入,为角 –

1

我有类似的情况,我没有让它自我调用函数。包括外部js文件到html中,它工作正常。