在AngularJS中,从controller1调用一个方法并将值发送到controller2。

14 浏览
0 Comments

在AngularJS中,从controller1调用一个方法并将值发送到controller2。

根据这个回答链接,我尝试在点击按钮时发送数据,并从Controller1调用Controller2的方法。

这是我的尝试:

Controller1:

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

Controller2:

$rootScope.$on("CallParentMethod", function() {
                   $scope.parentmethod(idv);
                });
$scope.parentmethod = function(idv) {
 // 数据处理
}

我的问题是,第二个控制器中的方法没有被调用,我已经在两个控制器中定义了$rootScope。

请帮助我解决这个问题,谢谢帮助。

0
0 Comments

这个问题出现的原因是两个控制器不是同时激活的。要解决这个问题,可以使用$rootScope.$broadcast方法在Controller1中调用Controller2的方法,并传递值。在Controller2中,使用$rootScope.$on方法接收调用并执行相应的方法。

解决方法如下:

$rootScope.$broadcast('CallParentMethod', {
    idv: idv,
});

在接收方的Controller2中:

$rootScope.$on('CallParentMethod', function(event, args) {
   $scope.parentmethod(args.idv);
});

如果上述方法还是无法调用第二个控制器中的方法,则可以通过检查两个控制器是否同时激活来确定问题所在。可以在两个控制器中分别使用console.log("active"),并在浏览器控制台查看打印结果。如果两个控制器都加载并激活,应该能够看到两个console.log语句。

如果两个控制器不是同时激活的,可以考虑使用一个服务来共享数据。

0