在AngularJS 1.5中访问子组件中父组件属性的方法是什么?

时间:2017-01-17 11:25:16

标签: angularjs

我有父组件和子组件,并且有一些要隐藏的元素,并使用<ng-if>属性值isTrue显示。但目前,面临着同样的麻烦。

完全情景:

我有一个名为&#39; isTrue&#39;在父组件控制器中,并使用isTrue: '<'将其传递给子组件。现在,在子组件中,我需要使用isTrue属性值隐藏一些东西,我没有这个问题。

现在。再次循环重复相同,但这次我想要使用isTrue在父组件中硬重置isTrueCheck()并再次发送回子组件。现在,isTrue应设置为true并将其发送到子组件。

综述

  

同样每当我调用isTrueCheck()时,我只想设置&#39; isTrue&#39;为true并将其发送给子组件。

我尝试将其设置为$onInit()

家长控制器:

this.isTrue;
this.isTrueCHeck = function(){
    isTrue = true;
};

儿童控制器:

isTrue: '<'
if (isTrue){
   isTrue= false;
}

儿童HTML /模板

<div ng-click="isTrueCheck"></div>// Calling to reset `isTrue` property
<div ng-if="$ctrl.isTrue">ele1</div>
<div ng-if="!$ctrl.isTrue">ele2</div>

现在,我想调用父控制器并将硬重置为true并执行相同的过程。

2 个答案:

答案 0 :(得分:0)

我不确定我理解你的问题。 如果我说的话,我是对的。

  1. 您有一个父组件和一些孩子
  2. 您在父级中设置了变量'isTrue',并希望在子级中传播它。当'isTrue'在父级中发生更改时,您希望在子级中触发它。
  3. 好吧,如果是这样,在孩子中你需要在你的孩子中实现$ onChange方法:

    isTrue: '<'
    

    上面的那个是你从父母那里传来的变量。

    //
    // React to changes of *one-way bindings* (< and @) of a component
    // see http://blog.thoughtram.io/angularjs/2016/03/29/exploring-angular-1.5-lifecycle-hooks.html
    // see https://toddmotto.com/angular-1-5-lifecycle-hooks#onchanges
    ctrl.$onChanges = function (changesObj) {
        // if isTrue changes, do something
        if (changesObj.isTrue && changesObj.isTrue.currentValue) {
            // do something...
            // ....
        }
    }
    

    请参阅:http://blog.thoughtram.io/angularjs/2016/03/29/exploring-angular-1.5-lifecycle-hooks.html

    https://toddmotto.com/angular-1-5-lifecycle-hooks#onchanges

答案 1 :(得分:-1)

如果您的HTML如下所示,您可以执行以下操作:

<div ng-controller="ParentCtrl">
    <div ng-controller="ChildCtrl">
    </div>
</div>

然后您可以按如下方式访问父范围

function ChildCtrl($scope) {
    $scope.isTrue= $scope.$parent.isTrue;
}

如果要从视图中访问父控制器,则必须执行以下操作:

<div ng-if="$parent.isTrue">ele1</div>
<div ng-if="!$parent.isTrue">ele2</div>