表内的ng-controller不起作用,为什么?

时间:2017-07-25 21:58:58

标签: angularjs angularjs-directive

<div ng-controller="xxxController" >                           
  <table>                       
    <tr ng-repeat="x in xxxx">
       <td>...
       </td>
    </tr>
  </table>
</div>  

ng-controller标签在任何表格旁边,它工作正常。

但如果ng-contoller标签在任何表格内,则ng-repeat不起作用

<table>                                                             
  <div ng-controller="xxxController" >
    <tr ng-repeat="x in xxxx">
      <td>...
      </td>
    </tr>
  </div>    
</table>

2 个答案:

答案 0 :(得分:6)

c(1, "a")不是<div>的有效子元素。因此,<table>会移到<div ng-controller="xxxController">之外,导致<table>无效,因为它们也会在<tr>之外。

为了<table>位于<div>内,它实际上需要是<table>的孩子,我认为这会打破你的结构。

作为替代方案,在<td>元素本身上使用ng-controller是一种有效的语法:

<table>

答案 1 :(得分:0)

<table>
  <tr>
    <td>       
        <div ng-controller="xxx" >

           <tr ng-repeat="x in xxxx">
              <td>...
              </td>
           </tr>

        </div> 

      </td>
     </tr>
</table>       

我测试过,这个有效。 div是无效的表元素,所以如果是side表中的div,必须用td元素包装,以便ng-controlller工作。

但是在我的情况下,在嵌套的多表中使用div,即使换行也行不通。

所以最终的解决方案是用div元素替换表元素。例如,你有嵌套表,用嵌套的div替换它们,这将始终保证div ng-controll =“xxxx”工作!