我怎样才能在嵌入模板中使用ngRepeat项?有可能吗?
指令模板:
<ng-transclude ng-repeat="record in records | filter1 | filter2"></ng-transclude>
指令:
app.directive('myDirective', function () {
return {
templateUrl: '/views/directives/mydirective.html',
restrict: 'A',
transclude: true,
scope: {
records: '='
}
};
});
控制器视图:
<div my-directive records="myRecords">
{{ myDirective.record }}
</div>
2条答案
按热度按时间yc0p9oo01#
从你做的方式看不像。
但是你可以通过指令中的
$compile
模板来实现这一点。http://jsbin.com/mirisixodo/edit?html,js,console,output
x759pob22#
(意识到这几乎肯定是太晚了,你用...)
看起来这一点在这个AngluarJS GitHub问题中已经详细讨论过了,多亏了moneytree-doug,有一种方法可以解决你的问题,而不必求助于
compile
。问题似乎是,至少从AngularJS 1.2.18开始,transcluding创建了自己的子作用域,因此您的迭代变量不再是可访问的。
然而,
$parent
* 是可访问的,我们可以使用它来访问迭代变量,并完成您想要做的事情。基于Micah's jsbin构建...
HTML:
JavaScript语言
结果
JsBin of reasonable success .
因此,再次强调,关键是将控制器行从
{{ myDirective.record }}
更改为?: {{$parent.record}}
。