2017-07-25 2 views
0
<div ng-controller="xxxController" >       
    <table>      
    <tr ng-repeat="x in xxxx"> 
     <td>... 
     </td> 
    </tr> 
    </table> 
</div> 

ng-controllerタグ外面任意の表、それはうまく動作します。ng-controller insideテーブルが動作しません、なぜですか?

しかし、以下のNG-contollerタグは任意のテーブル内にあるかどうかを、NG-repeatが

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

究極の解決策は、table要素をdiv要素で置き換えることです。たとえば、ネストされたテーブルがある場合はネストされたdivに置き換えます。これはdiv ng-controll = "xxxx"の動作を保証します。 – hoogw

答えて

6

<div>に動作しませんが<table>の有効な子要素ではありません。そのため<div ng-controller="xxxController"><table>の外側に移動し、<tr>は無効になります。これは<table>の外にもあるためです。

<div><table>の内部に入るようにするには、実際には<td>の子である必要があります。これはあなたが持つ構造を破壊すると思います。代替案として

が、それは<table>要素自体にng-controllerを持つための有効な構文は次のとおりです。私はそれをテストしてい

<table ng-controller="xxxController"> 
    <tr ng-repeat'"x in xxx"> 
    <td>... 
    </td> 
    </tr> 
</table> 
+0

"x in xxx">は動作しません。ありがとう。 – hoogw

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

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

     </div> 

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

、これは動作します。 divは有効な表要素ではないため、サイド表のdivをtd要素でラップする必要があり、ng-controllerが機能するようにする必要があります。

しかし、私の場合、ネストされたマルチテーブルのdivでは、ラップさえ機能しません。

究極の解決策は、table要素をdiv要素で置き換えることです。たとえば、ネストされたテーブルがある場合はネストされたdivに置き換えます。これはdiv ng-controll = "xxxx"の動作を保証します。

関連する問題