错误:[$ compile:multidir]多个指令[mdVirtualRepeat,ngInclude]要求进行转换

时间:2015-11-25 09:05:39

标签: javascript html angularjs angularjs-directive angular-material

我在html页面中使用mdVirtualRepeat指令时出现问题。问题是我需要在同一个标​​签中包含一个html。这是我应该做的:

<table>
   <thead>
    <tr>
       <th ng-repeat="header in headers">
           {{header.title}}
       </th>
    </tr>
   </thead>
   <tbody md-virtual-repeat-container 
          id="vertical-container"
          md-auto-shrink = "true"
          md-virtual-repeat="item in items.list"
          data-ng-include="./details.html'">
   </tbody>
</table>

并且details.html页面包含我的表的列2 tr。类似的东西:

<tr>
   <td>
     {{item..}}
   </td>
   <td>
      {{item..}}
   </td>
</tr>
<tr>
   <td colspan="2">
      {{item..}}
   </td>
</tr>

真正的问题是item需要在所有detail.html页面中使用它。因此,我无法在第一个<tr>代码中循环播放,因为在第二个代码中我无法再使用它。但是通过这种方式,我无法使用该指令,因为我收到了这个错误:Error: [$compile:multidir] Multiple directives [mdVirtualRepeat, ngInclude] asking for transclusion

有没有办法解决问题?

编辑: 或者有可能是这样的吗?

 <tr md-virtual-repeat="item in items.list">
   <td>
     {{item..}}
   </td>
   <td>
      {{item..}}
   </td>
</tr>
<tr>
   <td colspan="2">
      {{item..}} (use item also here out of ng-repeat?)
   </td>
</tr>

1 个答案:

答案 0 :(得分:1)

尝试创建指令。类似的东西:

yourModule.directive('details', function() {
  return {
    restrict: 'A',
    templateUrl: 'details.html'
  };
});

然后:

<tbody md-virtual-repeat-container 
      id="vertical-container"
      md-auto-shrink = "true"
      md-virtual-repeat="item in items.list"
      details>

修改: 这是simplified example