我想触发/调用从 LihatKhsController
到 KhsController
的 callkhs
:
function KhsController($scope, $rootScope){
$scope.$emit('callkhs', {param:'test'});
}
我尝试从 KhsController
获取参数到 LihatController
:
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>
JS
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
});
}
此处 KhsController
将触发 LihatKhsController
,因为 LihatKhsController
是 KhsController
的一部分。
如果您使用 $scope.$broadcast
,它会通知它的子级
像这样
<div ng-contoller="KhsController">
<div ng-controller="LihatKhsController">
</div>
</div>
JS
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
});
}
此处 KhsController
将触发 LihatKhsController
,因为 KhsController
是 LihatKhsController
的父级。
他们都不会考虑兄弟 Controller 之类的
<div ng-contoller="KhsController">
</div>
<div ng-controller="LihatKhsController">
</div>
$emit
和 $broadcast
在 rootScope
中略有不同。
如果您使用$rootScope.$emit
,它只会在$rootScope.$on
上发出通知。
如果您使用$rootScope.$broadcast
,它不仅会通知$rootScope.$on
,还会通知所有$scope.$on
.
像这样
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);
});
}
关于javascript - 无法从angularjs ionic框架中的另一个 Controller 调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34522409/