Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以在Angular js中的不同子控制器中使用相同的方法吗_Javascript_Angularjs_Controller_Parent - Fatal编程技术网

Javascript 我可以在Angular js中的不同子控制器中使用相同的方法吗

Javascript 我可以在Angular js中的不同子控制器中使用相同的方法吗,javascript,angularjs,controller,parent,Javascript,Angularjs,Controller,Parent,我想在特定的子控制器中运行函数。所有子控制器中都存在相同的函数名。我的问题是如何从特定控制器调用函数 父控制器: app.controller("parentctrl",function($scope){ $scope.clickfunc = function(){ $scope.childmethod(); } }); app.controller("childctrlone",function($scope){ $scope.childmethod= function(){ alert

我想在特定的子控制器中运行函数。所有子控制器中都存在相同的函数名。我的问题是如何从特定控制器调用函数

父控制器:

app.controller("parentctrl",function($scope){
$scope.clickfunc = function(){
 $scope.childmethod();
}
});
app.controller("childctrlone",function($scope){
$scope.childmethod= function(){
 alert(1);
}
});
app.controller("childctrltwo",function($scope){
$scope.childmethod= function(){
 alert(2);
}
});
子控制器:

app.controller("parentctrl",function($scope){
$scope.clickfunc = function(){
 $scope.childmethod();
}
});
app.controller("childctrlone",function($scope){
$scope.childmethod= function(){
 alert(1);
}
});
app.controller("childctrltwo",function($scope){
$scope.childmethod= function(){
 alert(2);
}
});

我想从childctrltwo调用$scope.childmethod()

您可以通过广播来自父级的事件并在子控制器中侦听此事件来完成此操作。(推荐)

其他方式(但不推荐)-

使用$$childHead或$$childTail-

// will only work if app controller has only two childs in order
 app.controller("parentctrl",function($scope){
    $scope.clickfunc = function(){
      $scope.$$childHead.childMethod();// first child
      $scope.$$childHead.$$nextSibling.childMethod(); // second child
      $scope.$$childTail.childMethod()// second child
      $scope.$$childTail.$$previousSibling.childMethod()//first child
    }
 });
使用angular.element()


没有直接的方法可以做到这一点。是否存在确定调用哪个子控制器的逻辑?如果是,您可以从父控制器的
clickfunc
触发事件,并在每个子控制器中侦听这些事件。根据父控制器发出的数据,子控制器将决定是否运行其功能谢谢您的回复。除了{child:1}以外,还有什么方法可以通过控制器名来识别控制器吗?不可能通过控制器名来识别,但我还包括了两种方法。如果你喜欢我的回答,请投我一票