web-dev-qa-db-ja.com

同じController Angular Js

私はangularjsを使用するのは初めてであり、コントローラで2つの関数を宣言しましたが、1つの関数を別の関数に使用したいのですが、どうすれば関数名を別の関数に言うと未定義です.

コードは次のとおりです。

'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
    };
  }
]);
8
Naresh k
.controller('SampleController',function($scope){
$scope.funcA = function(){
   $scope.funcB();//scope level function
   funcC(); //non scope level function``
}
$scope.funcB = function(){
}
var funcC = function(){
}
});
12
Rajkumar Rathi

私にとって最高の仕事をした

var app = angular.module('MyApp', []);
app.controller('MyCtrl',['$scope',function($scope)
 {
$scope.functionA=function(){
alert("Inside functionA")
$scope.functionB();     
};                                                               
$scope.functionB=function(){                                                                            
alert("Inside functionB");       
}
}]);
<!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>
3
iqbal lone
.controller('SampleController',function($scope){
$scope.funcA = function(){
   $scope.funcB();//scope level function
   funcC(); //non scope level function``
}
$scope.funcB = function(){
}
var funcC = function(){
}
});
2
mohit sharma

あなたは物事を複雑にしています。単純に、このようにします

'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
Nikhil Aggarwal

上記の例では、コードのいくつかの領域が混同されています。まず、function2が正しく宣言されていません。

getDetails関数を 自己実行匿名関数 と呼ばれるものにラップしました。これは、function2を含むSEAFラッパーの外側のコードには表示されないことを意味します。 function2が使用したいときにgetDetailsが定義されるように、SEAFラッパーを省略します。

最後に、Angularを使用していますが、function2をコントローラーのthisに割り当てています。 HTMLはthisではなく$scopeに添付する必要があります。

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

    function getDetails() {
        //IMPLEMENTATION
    }

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

あなたが何を達成しようとしているのか正確にはわかりませんが、単に2つの関数を次のように宣言できます

function getDetails() {
    //IMPLEMENTATION
}

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

私のためにうまくいく:

{
    // 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();
           }
        }
    }
}
0
Jayesh Neema
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
Kerisnarendra