我有以下自定义指令:
angular.module('Interfaces').directive('Interfaces', function() {
return {
restrict : 'A',
scope : {
minor : '@'
},
templateUrl : 'interfaces/interfaces.template.html',
controller : [ '$scope', 'InterfacesService', function InterfaceController($scope, InterfacesService) {
$scope.interfacesService = InterfacesService;
$scope.label = 'Interfaces';
$scope.optional = ($scope.minor == "true");
if ($scope.optional) {
$scope.label = '';
}
$scope.getInterfaces = function getInterfaces() {
return $scope.interfacesService.getInterfaces($scope.minor);
};
} ]
};
});
以及以下模板
<tr ng-class="{'optional': optional}"><td colspan="5">Just testing</td></tr>
<tr ng-class="{'optional': optional}" ng-repeat="interface in interfaces = (getInterfaces())" >
<td rowspan='{{interfaces.length}}' class='label-column' ng-if="$index === 0">{{label}}</td>
<td colspan='2' class='data'>{{interface.key}}</td>
<td colspan='2' class='data'>{{interface.value}}</td>
</tr>
我将此指令用作表格的一部分:
<table>
<tbody>
<!-- other table content -->
</tbody>
<tbody interfaces minor="true"></tbody>
<tbody interfaces minor="false"></tbody>
<tbody>
<!-- other table content -->
</tbody>
</table>
第一个表格行只是为了测试目的而添加的。根据变量“可选”的值,它正确地具有“可选”类。但是,由 ng-repeat 创建的那些表行永远不会设置“可选”类,无论“可选”变量的值是什么。
我发现以下文章 Angular js Custom Directive on element with ng-repeat - Can't set CSS classes 这建议在我的指令中使用 -1001 的优先级,但该帖子中原始代码的 1001 和 -1001 都不是答案中的建议对我的情况有所不同。
为什么 ng-class 不应用于具有 ng-repeat 的元素?