【问题标题】:Compiling conditionally inserted html in an ng-repeat which is within a directive's template在指令模板中的 ng-repeat 中编译有条件插入的 html
【发布时间】:2014-11-08 17:10:17
【问题描述】:

我有一个带有 ng-repeat 指令的指令模板,如下所示:

template: "<table ng-repeat='num in seq track by $index'><tr><td>{{$index+1}}</td><td>{{num}}</td></tr></table>"

$scope.seq 是一个数字数组,直到索引 131,此时我推送了字符串 "&lt;span class='stayTuned'&gt;stay tuned!&lt;/span&gt;"

当然,这个字符串是按原样推送的,不是 DOM 元素。将此 html 字符串编译为 DOM 元素然后“附加”它的最佳方法是什么,但在我的列表的上下文中?

【问题讨论】:

  • at which point I push the string 是什么意思?
  • 我没有看到推送字符串的代码,你能分享一下吗

标签: javascript html angularjs angularjs-directive angularjs-ng-repeat


【解决方案1】:

如果我改述一下,我是这样理解你的问题的:

如何使用 ng-repeat 创建列表,并且如果列表元素的数量超过 131,append&lt;span&gt;

如果是这样,你不需要任何花哨的东西来 $compile - 只需在你的模板中使用现有的 Angular 指令 - ng-if 和过滤器 - limitTo

模板(多行便于阅读):

<table ng-repeat='num in seq | limitTo: 131 track by $index'>
  <tr>
    <td>{{$index+1}}</td>
    <td>{{num}}</td>
  </tr>
</table>
<span ng-if="seq.length > 131" class='stayTuned'>stay tuned!</span>

【讨论】:

  • 哦,天哪,我重新阅读了我的问题,现在几个小时后,我可以看到我的问题有多不清楚。感谢您将其改写为非常接近我的意思并回答。
猜你喜欢
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
相关资源
最近更新 更多