从嵌套的AngularJS或Ionic指令切换布尔变量

时间:2015-11-04 15:49:49

标签: angularjs angularjs-directive angularjs-scope ionic

我有一个嵌套列表来显示3个级别的评论和回复。我通过显示和隐藏两个日期元素中的一个来切换从时间到实际的日期。这适用于使用ng-click="$parent.swapDate=!$parent.swapDate"的每个级别,但不会影响其他级别。

如何将切换应用于结构的所有级别,如下所示(简化)?

<ion-content>
    <div class="list">
        <div class="item" ng-repeat="comment in comments">
            <span am-time-ago="comment.date | amUtc | amLocal" 
              ng-click="$parent.swapDate=!$parent.swapDate" 
              ng-hide="$parent.swapDate">
            </span>

            <span ng-click="$parent.swapDate=!$parent.swapDate" 
              ng-show="$parent.swapDate">
                {{comment.date | amDateFormat: 'D MMMM YYYY @ h:mma'}}
            </span>

            <div class="list">
                <div class="item" ng-repeat="comment in comments">
                    <span am-time-ago="comment.date | amUtc | amLocal" 
                      ng-click="$parent.swapDate=!$parent.swapDate" 
                      ng-hide="$parent.swapDate">
                    </span>

                    <span ng-click="$parent.swapDate=!$parent.swapDate" 
                      ng-show="$parent.swapDate">
                        {{comment.date | amDateFormat: 'D MMMM YYYY @ h:mma'}}
                    </span>
                </div>
            </div>
        </div>
    </div>
</ion-content>

我宁愿不使用全局变量或服务来做这么简单的事情。谢谢。

2 个答案:

答案 0 :(得分:1)

在ng-click或ng-hide或其他ng-xx中,$ parent.var一旦你改变它就会被隔离;因此其他div不会改变。试着把它放在一个物体上,例如$ parent.var_obj = {VAR:XX}

答案 1 :(得分:0)

标记&#39;答案帮助我找到了正确的方向。实际上,我正在阅读a good article,其中提到的是“点”。范围变量的最佳实践,我回到这个问题进行调查。

简单地替换

$parent.swapDate

comments.swapDate

在所有情况下都可以解决问题。