将Angular Directive属性绑定到父控制器

时间:2018-11-29 16:11:06

标签: angularjs

在ma-resource-text-watch指令中,我进行了api调用以获取资源文本列表。 如果api不返回任何资源文本,我希望能够隐藏警报组件。 有谁知道我怎么能做到这一点?

<div ng-controller="IntroductionCntrl" class="hidden-print">
    <div class="container-fluid" ng-if="introductionResourceKey">
        <alert-component type="guidance">
            <span ma-resource-text-watch="{{introductionResourceKey}}"></span>
        </alert-component>
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

您可以让指令接受一个回调(或表达式),该回调将在加载数据时触发。例如,在指令定义中,scope属性可以具有:

scope: {
  onTextsLoaded: '&'
}

该指令可以调用:

scope.onTextsLoaded({ texts: yourTexts })

父控制器可以将表达式作为回调传递,并使用ng-show隐藏alert-component

<alert-component ng-show="dataIsLoaded && texts.length">
    <span ma-resource-text-watch="{{introductionResourceKey}}" on-texts-loaded="onTextsLoaded(texts)"></span>
</alert-component>

函数定义如下:

$scope.onTextsLoaded = function(texts) {
    $scope.dataIsLoaded = true;
    $scope.texts = texts;
}