我创建了一个下拉输入指令,用户可以在其中传入模板字符串来设置列表实际呈现的内容。在我的示例中,我正在传递,<div style="background-color: darkgrey" ng-style="{\'color\': isActive?\'red\':\'blue\'}">{{index}}</div>
因此它将呈现项目索引号,然后根据 isActive 对其进行着色。索引显示正确,背景颜色正确但 ng-style 被忽略。我在 setTimeout 中创建模板,因为我必须等待 ng-repeat 渲染<li>
.
setTimeout(function() {
var spanList = elm.find('li');
for (var index = 0; index < scope.list.length; index++) {
var listElm = angular.element(spanList[index]);
var listData = scope.list[index]
listElm.html($interpolate(scope.listTemplate)(listData));
}
}, 0);
我正在遍历<li>
元素并为每个元素设置模板。我使用 $interpolate 而不是 $compile 因为使用 $compile 会导致 [[Object HTMLDivElement]] 而我不知道为什么。据我所知,$compile 无论如何都使用 $interpolate,它可以工作,除了 ng-style、ng-show 和 ng-hide 不起作用。为什么 Angular 的指令不能与 $interpolate 一起使用?
这是工作示例plunker。