2015-05-26 18 views
0

我正在研究一個應用程序,我似乎無法弄清楚爲什麼我的ng-click只能在我的(單個)tr標籤內工作,但是一旦我把它到另一個tr標籤停止工作。請記住它在第一個tr標籤中使用ng-repeat之前就已經工作了。這是我的代碼看起來像什麼,任何建議將大大幫助!Ng-click在我的tr標籤之外不起作用AngularJS

<table> 
    <tbody> 
     <tr> 
      <td ng-click="commentOpen = !commentOpen"> 
       <div class="iconsize">Comment Closed</div> 
      </td> 
      <td ng-click="switchOpen = !switchOpen"> 
       <div class="iconsize">Switch Closed</div> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <div ng-show="commentOpen == true"> 
        <textarea>Comment Open</textarea> 
       </div> 
       <div ng-show="switchOpen == true"> 
        <p>Switch On</p> 
       </div> 
      </td> 
     </tr> 
    </tbody> 
</table> 

回答

0

我對標籤造成了ng-repeat,導致我的ng-click不能觸發。我最終將ng-repeat移動到了tbody,ng-click和ng-show又開始工作了。

0

ngRepeatngRepeat爲其子代創建新的作用域,它通常看起來像訪問相同的作用域,因爲這個新作用域繼承了它的父類。

意思是,commentOpen實際上是指錯誤範圍內的屬性。

下面是三種可能的方式爲您解決這個問題:

1)controller as,始終是指你的名字後是控制器

2)$parent.commentOpen(不這樣做呢!隨着你巢非常混亂)

3)代替commentOpenswitchOpen,你可以使用一個對象(如$scope.openControls = { comment: false, switch: false },然後在TD標籤,你會喜歡寫東西ng-click='openControls.comment = !openControls.comment')。這樣它就通過引用繼承了(作爲一個布爾值將被值),並保持同步。

+0

工作!非常感謝您的參與。 – BV2005