2014-05-16 147 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中,它工作正常。