2014-05-16 32 views
18

Ho il file js esterno che ha più funzioni.Chiamare la funzione file js esterno nel controller js angolare

Devo chiamare queste funzioni dal controller angolare.

Ad esempio: external.js

... 
... 
function fun() { 
    ... 
    ... 
} 
... 
... 

controllore: acccountController.js

myApp.controller('AddAccountController',function ($scope,AddAccountLoginServices,$location,localStorageService,$compile,toaster){ 
    .... 
    .... 

    $scope.getLoginForm = function(siteId,name) { 
      ... 
      ... 
      fun(); // This function from external.js file 
    }); 

    ... 
    ... 

}); 

Ho importato external.js prima dei acccountController.js. Ma non chiama quella funzione. E anche io non ho avuto alcun errore di console per questo.

Come raggiungere questo ... Grazie in anticipo.

+1

Come è stato importato il js esterno nel modulo angolare? – Shikhar

risposta

7

EDIT: ha dato una risposta errata, il mio male. il seguente esempio funziona.

tuo file esterno dovrebbe in questo modo:

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

e il controller si chiama la funzione script:

console.log(doSomething.test); 

o

doSomething.test2(); 

ho imparato qualcosa di troppo, grazie;)

+0

Grazie per la risposta. Sono novizio per angular js. se metto var external = require ('assets/plugins/form-generation/js/external.js'); in controller significa, ottengo questo errore console "ReferenceError: require is not defined". – user2731645

+0

mi dispiace, richiedono solo node.js ... il mio errore. ... ancora provato;) – nilsK

+0

@ user2731645 modifica il mio post – nilsK

0

Dove si chiama $ scope.getLoginForm() ?. Penso che tu non lo chiami mai. Così divertente() non viene chiamato, quindi non vedi nulla. È necessario chiamare $ scope.getLoginForm(). Due modi per chiamare in HTML <button ng-click="getLoginForm()"></button> o in Javascript $scope.getLoginForm() Buona fortuna!

5

Come indicato da @nilsK, si definisce un self invoking function. E quindi fare riferimento ad esso tramite l'oggetto window. Per esempio -

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

E poi,

window.functionName(); 

E se si sta usando AngularJS,

$window.functionName(); 
+0

$ finestra deve essere iniettata, per angolare –

1

devo situazione simile e non ho dovuto farlo funzionare invocando sé. Compreso il file js esterno nell'html e ha funzionato bene.

Problemi correlati