我有一组自定义图表指令,例如<div class='ico-graph'/>
,我正在尝试根据包含icograph
指令名称、数据和标题的配置生成它们的堆栈;
<div ng-repeat="icograph in vm.icographs" ng-class="icograph.graph" title="icograph.title"
values="icograph.data">
</div>
指令本身支持EAC
元素、属性或类定义,例如;
angular.module('myApp.directives')
.directive("icoGraph", [function () {
return {
restrict: "EAC",
scope: {
type: "=",
title: "=",
values: "=",
},
template: "<ng-include src=\"'/ng/app/views/directives/IcoGraph.htm'\"></ng-include>",
link: icoGraphLinker({}), // inits the linker function which returns a link function
}
}])
}
问题
现在这些指令在静态定义时工作正常,但我想根据icograph.graph
. 正如您在上面的 HTML 中看到的那样,我正在尝试根据in 中的属性设置class
(选择指令) 。graph
icograph
这行得通;
class="ico-graph"
class="{{'ico-graph'}}"
但这些没有(我没有图表);
class="{{icograph.graph}}"
ng-class="{{'nupe-ico-graph'}}"
ng-class="{{icograph.graph}}"
ng-class="icograph.graph"
此外,如果我{{icograph.graph}}
在页面中发出,我可以验证它是否包含字符串"ico-graph"
我假设评估顺序或范围在某种程度上是 ng-repeat 的问题,但我不太明白这个问题。
实际上,我怀疑这与编译有关。可能 ng-repeat 在插值之前获取了我的节点定义的副本,并且在 dom 转换期间它没有被视为指令。如果有人可以提供更好的解释,也许可以解决我如何在不使用执行所有图表类型的单个指令的情况下实现这一点(就像我现在正在做的那样),这将是一个有用的帖子。