Javascript 无法从angularjs ionic framework中的另一个控制器调用方法

Javascript 无法从angularjs ionic framework中的另一个控制器调用方法,javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,我想从lihatkhscocontroller到khscocontroller触发/调用callkhs: function KhsController($scope, $rootScope){ $scope.$emit('callkhs', {param:'test'}); } function LihatKhsController($scope, $rootScope){ $scope.$on("callkhs", function(event, data){

我想从
lihatkhscocontroller
khscocontroller
触发/调用
callkhs

function KhsController($scope, $rootScope){
     $scope.$emit('callkhs', {param:'test'});
}
function LihatKhsController($scope, $rootScope){
    $scope.$on("callkhs", function(event, data){
      console.log('halo callkhs', data.param); //not show
    });
}
我尝试从
khscocontroller
LihatController
获取参数:

function KhsController($scope, $rootScope){
     $scope.$emit('callkhs', {param:'test'});
}
function LihatKhsController($scope, $rootScope){
    $scope.$on("callkhs", function(event, data){
      console.log('halo callkhs', data.param); //not show
    });
}

请帮我解决这个问题。

如果您使用
$scope.$emit
,它将只通知它的父
scope

像这样

<div ng-contoller="LihatKhsController">
 <div ng-controller="KhsController">
 </div>
</div>
此处
KhsController
将触发
LihatKhsController
,因为
LihatKhsController
KhsController
的前身

如果使用
$scope.$broadcast
,它将通知它的子项

像这样

<div ng-contoller="KhsController">
 <div ng-controller="LihatKhsController">
 </div>
</div>
function KhsController($scope, $rootScope){
     $rootScope.$broadcast('callkhs', {param:'test'});
}

function LihatKhsController($scope, $rootScope){
    $scope.$on("callkhs", function(event, data){
      console.log('halo callkhs', data.param);
    });
}
此处
KhsController
将触发
LihatKhsController
,因为
KhsController
LihatKhsController
的父级

<>他们都不考虑兄弟姐妹控制器如

<div ng-contoller="KhsController">
</div>
 <div ng-controller="LihatKhsController">
 </div>

你试过了吗?这是一种编写行为一致的应用程序的现代方法。有一个。

其他答案使用
$rootScope.$broadcast
和相关的
$rootScope.$on
将起作用,但我更喜欢在这种情况下使用
$rootScope.$emit
。考虑到您正在收听的是
$rootScope
,因此无法在整个作用域树中传播消息。使用
$rootScope.$emit
$rootScope.$on
,它本质上是一条直接消息。性能方面的好处可能可以忽略不计,但我认为这种方法没有任何缺点

var-app=angular.module('khsApp',[]);
app.controller(“KhsController”,函数($scope,$rootScope){
$scope.sendMessage=函数(){
$rootScope.$emit('message','messagesent');
}
});
app.controller(“lihatkhscocontroller”,函数($scope,$rootScope){
$rootScope.$on(“消息”,函数($event,data){
$scope.received=数据;
});
});

发送

Angular默认情况下有此类工具。Angular不需要Redux。@AlexanderElgin这是错误的,Redux不是工具。您可以使用DI、
$broadcast
$scope
或任何方法来实现这一点,但是@Anik询问最佳实践是什么(代码的设计模式和可维护性)。redux是实现这一点的现代方法。在Angular中,最好的做法是不使用redux为什么?Redux是react打破一切的原因。react因其性能而广受欢迎。Redux只是React使用的工具。但是Angular中不需要它。您可以使用Service..在两个控制器中调用相同的函数吗。。!?