2015-11-04 43 views
0

我有一個嵌套列表來顯示3個級別的註釋和回覆。我通過顯示和隱藏兩個日期元素中的一個來切換從前一時間到實際點擊的日期。這適用於使用ng-click="$parent.swapDate=!$parent.swapDate"的每個級別,但不會影響其他級別。從嵌套的AngularJS或Ionic指令中切換布爾變量

如何將切換應用於結構的所有級別,如下所示(簡化)?

<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> 

我寧願不使用全局變量或服務這樣一個簡單的事情。謝謝。

回答

1

在ng-click或ng-hide或其他ng-xx中,$ parent.var在您更改後會變得孤立;因此其他div不會更改。嘗試將其放入一個對象中,例如$ parent.var_obj = {var:xx}

+0

我懷疑你指的是使用對象而不是基元('點'問題)。請詳細說明(並使用代碼標記以提高可讀性)。 – isherwood

0

Marks的答案幫助我朝正確的方向發展。其實,我讀a good article,提到範圍變量的'點'最佳實踐,我回到這個問題進行調查。

只需使用

comments.swapDate 

在所有情況下更換

$parent.swapDate 

解決此問題。