在AngularJS中,从controller1调用一个方法并将值发送到controller2。
在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。
请帮助我解决这个问题,谢谢帮助。
这个问题出现的原因是两个控制器不是同时激活的。要解决这个问题,可以使用$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语句。
如果两个控制器不是同时激活的,可以考虑使用一个服务来共享数据。