【发布时间】:2015-08-08 06:52:37
【问题描述】:
我正在尝试获取在我的自定义指令中使用的 ng-repeat 指令的初始 html 模板,该指令包含嵌套内容。但取而代之的是在指令中设置的实际 html 文本,我要么已经编译了 ng-repeat 指令,要么只是一个如下所示的注释:
<!-- ngRepeat: item in items -->
我已经在github 提出了这个问题,但不幸的是,我的答案不是很清楚。有没有办法在编译之前获取 ng-repeat 指令模板?
这是我想要实现的一个简单示例(以及plnkr):
app.directive('parent', function() {
return {
restrict:'E',
template:'<div ng-transclude></div>',
transclude: true,
priority: 1001,
scope: true,
compile: function(element, attrs) {
console.log(element.html());
console.log(element);
}
};
});
<parent>
<div ng-repeat="item in items">
{{item}}
</div>
</parent>
【问题讨论】:
-
你是对的——评论是编译的产物。在一天结束时,您实际上想要实现什么。可能有更简单的方法
-
因此,我想要一个包含 ng-repeat 并对其进行修改的指令(实际上它应该用 dir-paginate 指令替换 ng-repeat)。这就是为什么我在编译之前尝试检索初始的 ng-repeat
-
这似乎是一种奇怪的实现方式。为什么不直接使用正确的指令呢?但是,如果必须,您可以使用
terminal: true和高于ng 的重复优先级并修改HTML,然后在内容上启动$compile -
在这个指令的引擎盖下还会有一些其他的东西,所以我认为这是唯一的方法。关于制作指令终端 - 似乎它不是那样工作的。我试图使外部指令终端以及指定的优先级高于 ng-repeat 的优先级,但我得到的只是 .
-
看,可以玩并让它工作,但你的问题是关于获取
ng-repeat的模板。因此,最好提出一个新问题并指定确切的要求。
标签: javascript angularjs angularjs-directive angularjs-ng-repeat