如何从父节点传递子控制器上的函数并传递参数?

时间:2014-01-27 08:14:20

标签: angularjs

我有一个HTML页面和一个父控制器:

<a data-ng-click="callChild('x')"></a>

$scope.callChild = function (task) {

}

如何制作它以便在单击链接时调用函数callChild 在子控制器中执行,并将参数传递给子控制器函数?

1 个答案:

答案 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 - 通过范围层次结构向上调度事件。