从Angular 1.5中的父组件调用子组件函数

时间:2017-07-13 10:40:28

标签: angularjs

在我的父组件模板中,有一个嵌套组件。

<div class="inner" ng-show="!vm.loading">
    <div class="info-panel">
        <h3 id="basePrice">Current Cost</h3>
        <p>
            <small>
                <a href role="button" data-toggle="modal" ng-click="vm.openCostsModal()">See Details</a>
            </small>
        </p>
    </div>
    ......
    ......
    <pricingcalculation></pricingcalculation>

<pricingcalculation></pricingcalculation>是嵌套组件。 它的定义如下:

(function () {
    "use strict";
    angular.module("app")
        .component("pricingcalculation", {
            transclude: true,
            templateUrl: "/static/angtemplates/pricing-calculation.html",
            controllerAs: "vm",
            controller: ["$rootRouter", function ($rootRouter) {
                var vm = this;
                vm.openCostsModal = function () {
                    vm.costItems = [];
                    vm.projectedCostItems = [];
                    vm.totalOfCostItems = 0;
                    .....
                    .....

依据See Details按钮点击在父模板上定义的

我希望调用子组件的函数openCostsModal()

怎么做?

1 个答案:

答案 0 :(得分:9)

您可以在父母中使用$broadcast来广播某个活动,并在您的孩子中使用$on来收听该活动。

像这样:

在父母:

$scope.$broadcast("someEvent"); 

在孩子:

$scope.$on("someEvent",function(){
  //do stuff here
});