2015-06-05 8 views
6

Ich bin neu zu verwenden angularjs und ich habe eine zwei Funktionen im Controller erklärt, und jetzt möchte ich eine Funktion in eine andere Funktion verwenden, wie kann ich das tun bedeutet, wenn Ich sage Funktionsname in eine andere Funktion sagt Undefined.Aufruf Funktion in eine andere Funktion mit in der gleichen Controller Winkel Js

hier ist der Code:

'use strict'; 
angular.module('customer').controller('Controller', ['$scope', '$state', 'Sservice', 
    function($scope, $state, Sservice) { 

    var that = this; 

    (function getDetails() { 
     //IMPLEMENTATION 
    }()); 

    this.function2 = function function2 (id){ 
     //implementation 
     getDetails(); // says undefined 
    }; 
    } 
]); 
+1

i wan nur zu wissen, wie in einer anderen Funktion in der gleichen Steuerung –

+0

'Funktion a() {b() eine Funktion aufzurufen; } '. –

+0

Ich habe Code zu meiner Frage hinzugefügt können Sie überprüfen und bitte sagen Sie mir, wo ich falsch gelaufen bin? –

Antwort

9

.controller('SampleController',function($scope){ 
 
$scope.funcA = function(){ 
 
    $scope.funcB();//scope level function 
 
    funcC(); //non scope level function`` 
 
} 
 
$scope.funcB = function(){ 
 
} 
 
var funcC = function(){ 
 
} 
 
});

+0

aber meine Funktionen sind nicht in $ scope –

+0

Können Sie die Reglerstruktur –

0

Ich weiß nicht, was Sie genau erreichen wollen, aber Sie können Ihre beiden Funktionen als

einfach erklären
function getDetails() { 
    //IMPLEMENTATION 
} 

this.function2 = function(id) { 
    getDetails(); 
}; 
+0

getDetails teilen, ist globale Funktion wird ausgeführt, wenn Controller function2 geladen wird, wird ausgeführt, wenn Benutzer klickt auf die Schaltfläche ich will getDetails Funktion auszuführen, wenn der Benutzer auf klickt button ie ich möchte getDetails in function2 aufrufen ich habe die selbe Logik versucht, die Sie oben eingefügt haben, aber sie sagt undefined –

+0

Nein, getDetail() ist keine globale Funktion. Es ist nur von der Controller-Funktion sichtbar.Und function2() wird es aufrufen, wenn Sie es so deklarieren wie in meiner Antwort. Veröffentlichen Sie den aktualisierten Code in Ihrer Frage, veröffentlichen Sie den anderen relevanten Code, und senden Sie die vollständige und genaue Fehlermeldung, die Sie erhalten. –

0

Sie machen Dinge komplex. Einfach so,

'use strict'; 
angular.module('customer').controller('Controller', ['$scope', '$state', 'Sservice', 
     function($scope, $state, Sservice) { 

     function getDetails() { 
      //IMPLEMENTATION 
     }; 

     function function2 (id){ 
      //implementation 
      getDetails(); // says undefined 
     }; 
     } 
]); 
+0

getDetails ist eine globale Funktion, die ausgeführt wird, wenn der Controller geladen wird. Function2 wird ausgeführt, wenn der Benutzer auf die Schaltfläche klickt. Ich möchte die Funktion getDetails ausführen, wenn der Benutzer auf die Schaltfläche klickt, dh ich möchte getDetails aufrufen In Funktion2 wird –

+0

'getDetails' deklariert (nicht global, privat im Controller) und wird erst aufgerufen, wenn Sie' function2' aufrufen. – seanhodges

+0

Wenn mein Verständnis ist richtig - Sie können getDetails() zum Zeitpunkt der Ausführung des Controllers aufrufen und auch wenn Funktion2 aufgerufen wird. Bitte bestätigen Sie – nikhil

0

Mehrere Bereiche des Codes sind in Ihrem Beispiel oben verwirrt. Für den Anfang wird function2 nicht richtig deklariert.

Sie haben Ihre getDetails-Funktion in ein so genanntes self-executing anonymous function eingepackt. Dies bedeutet, dass es nicht sichtbar ist, außerhalb des SEAF-Wrappers zu codieren, einschließlich function2. Lassen Sie den SEAF-Wrapper aus, sodass getDetails definiert wird, wenn function2 es verwenden möchte.

Schließlich verwenden Sie Angular, aber zuweisen function2 zu this auf dem Controller. Das ist wahrscheinlich nicht das, was du machen wolltest; Funktionen, die Sie dem HTML bereitstellen möchten, sollten an $scope, nicht an this angehängt werden.

'use strict'; 
angular.module('customer').controller('Controller', ['$scope', '$state', 'Sservice', 
    function($scope, $state, Sservice) { 

    function getDetails() { 
     //IMPLEMENTATION 
    } 

    $scope.function2 = function(id) { 
     //implementation 
     getDetails(); 
    }; 
    } 
]); 
3

besten Arbeitete für mich

var app = angular.module('MyApp', []); 
 
app.controller('MyCtrl',['$scope',function($scope) 
 
{ 
 
$scope.functionA=function(){ 
 
alert("Inside functionA") 
 
$scope.functionB(); \t 
 
}; \t \t \t \t \t \t \t \t 
 
$scope.functionB=function(){ \t \t \t \t \t \t \t \t \t \t 
 
alert("Inside functionB"); \t 
 
} 
 
}]);
<!DOCTYPE html> 
 
<html ng-app="MyApp" ng-controller="MyCtrl"> 
 
    
 
<head> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js"></script> 
 
<meta charset="ISO-8859-1"> 
 
<title>Insert title here</title> 
 
</head> 
 
<body> 
 

 

 
<input type="button" value="Click to call functionA" ng-click="functionA()"> 
 

 

 
</body> 
 
</html>

0

My these options below could help 
 

 
'use strict'; 
 
angular.module('customer').controller('Controller', ['$scope', '$state', 'Sservice', 
 
    function($scope, $state, Sservice) { 
 

 
    function getDetails() { 
 
     //IMPLEMENTATION 
 
    }; 
 

 
    function function2 (id){ 
 
     //implementation 
 
     getDetails(); // says undefined 
 
    }; 
 
    } 
 
]); 
 

 

 
or 
 

 
'use strict'; 
 
angular.module('customer').controller('Controller', ['$scope', '$state', 'Sservice', 
 
    function($scope, $state, Sservice) { 
 

 
    $scope.getDetails = function() { 
 
     //IMPLEMENTATION 
 
    }; 
 

 
    $scope.function2 = function(id){ 
 
     //implementation 
 
     $scope.getDetails(); // says undefined 
 
    }; 
 
    } 
 
]);

0

Adaequat für mich:

{ 
    // define angular module/app 

    var formApp = angular.module('formApp', []); 

    // create angular controller and pass in $scope and $http 
    function formController($scope, $http) { 

     $scope.sitelist = function(){ 
      $http.get("http://mars.ourgoogle.in/clients/techinfini/customcms/index.php/Ajax/sitelist").then(function(items){  
      console.log(items.data); 
      $scope.list = items.data;  
     }); 
    } 

    // process the form 
    $scope.processForm = function() { 
     $http({ 
      method : 'POST', 
      url  : 'http://mars.ourgoogle.in/clients/techinfini/customcms/index.php/Ajax/angulartest', 
      data : $.param($scope.formData), // pass in data as strings 
      headers : { 'Content-Type': 'application/x-www-form-urlencoded' } // set the headers so angular passing info as form data (not request payload) 
     }).success(function(data) { 
       $scope.sitelist(); 
      } 
     } 
    } 
} 
1

.controller('SampleController',function($scope){ 
 
$scope.funcA = function(){ 
 
    $scope.funcB();//scope level function 
 
    funcC(); //non scope level function`` 
 
} 
 
$scope.funcB = function(){ 
 
} 
 
var funcC = function(){ 
 
} 
 
});

Verwandte Themen