【问题标题】:call a method and send value from controller1 to controller2 in AngularJS在AngularJS中调用一个方法并将值从控制器1发送到控制器2
【发布时间】:2016-11-28 01:38:16
【问题描述】:

基于此回复link 我尝试在单击按钮并从 Controller1 向 Controller2 调用方法时发送数据 这是我的尝试:

控制器1:

$scope.DetailsLivraison = function(){                                       
                var idv = $scope.idBonSortie;
       $rootScope.$emit("CallParentMethod", idv);                                                                                                  
}

控制器2:

$rootScope.$on("CallParentMethod", function(){
                   $scope.parentmethod(idv);
                });

$scope.parentmethod = function(idv) {
 //Data traitment
}

我的问题是,第二个控制器中的方法没有被调用,我在两个控制器中都定义了 $rootscope 任何帮助请解决问题 感谢您的帮助

【问题讨论】:

  • 你的两个控制器在同一个视图上吗?
  • 没有 MiTa 他们不在同一个视图上 :)
  • 所以不可能用事件来做,控制器只有在它处于活动状态时才会监听——它被分配给一个页面元素。
  • 好的,谢谢 MiTa,在这种情况下,我应该使用服务在这两个控制器之间共享数据吗??

标签: angularjs


【解决方案1】:

首先,要实现这一点,您的两个控制器都应该在那时处于活动状态。

其次,你可以使用下面的代码:

$rootScope.$broadcast('CallParentMethod', { //can also use $emit
    idv: idv,
});

在另一个控制器的接收端:

$rootScope.$on('CallParentMethod', function(event, args) {

       $scope.parentmethod(args.idv);

});

【讨论】:

  • 感谢您的回复,我尝试了您的代码但仍然无法正常工作,第二个控制器中的方法没有被调用:(
  • 当时第二个控制器是否处于活动状态?
  • 您可以通过在两个控制器中执行 console.log("active") 来检查两个控制器是否同时处于活动状态。当它们加载时,您应该在浏览器控制台中看到两个 console.log 语句
  • 不,先生,它们不是同时激活的,在这种情况下,我应该使用服务在这两个控制器之间共享数据吗??
猜你喜欢
  • 1970-01-01
  • 2014-08-05
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
相关资源
最近更新 更多