我有一个HTML页面和一个父控制器:
<a data-ng-click="callChild('x')"></a>
$scope.callChild = function (task) {
}
如何制作它以便在单击链接时调用函数callChild 在子控制器中执行,并将参数传递给子控制器函数?
答案 0 :(得分:1)
父控制器可以使用$broadcast
通知子控制器。
以下是一些示例 Live Demo :
<强> HTML 强>
<div ng-controller="ParentCtrl">
<a data-ng-click="callChild('x')">Click me</a>
<div ng-controller="ChildCtrl">
</div>
</div>
<强> JS 强>
var fessmodule = angular.module('myModule', []);
function ParentCtrl($scope, $timeout) {
$scope.callChild = function (val) {
$scope.$broadcast('someEvent', val);
};
}
function ChildCtrl($scope) {
$scope.$on('someEvent', function (event, val) {
alert('from child ' + val);
});
}
参考的
$ broadcast - 将事件向下调度到所有子范围,
$ emit - 通过范围层次结构向上调度事件。