我有数据图标,其类按车辆类型格式化,然后是子类型,如下所示:
.di-icon-type-car-full-size-car
.di-icon-type-car-mid-size-car
.di-icon-type-van-large-van
.di-icon-type-van-minivan
在我看来,我试图根据当前车辆的信息动态设置课程:
span(ng-class="'di-icon-type-' + vehicle.type + '-' + vehicle.sub_type")
问题是,我的vehicle.sub_type
变量的格式是下划线,而不是短划线。因此,该类显示为di-icon-type-car-full_size_car
,而不是di-icon-type-car-full-size-car
。有没有办法在使用之前将vehicle.sub_type
变量中的所有下划线转换为连字符?
答案 0 :(得分:2)
我建议将字符串连接和短划线规范化移动到控制器中的函数中,如下所示:
$scope.getIconClass = function(vehicle) {
var className = 'di-icon-type-' + vehicle.type + '-' + vehicle.sub_type;
return className.replace(/_/g, '-');
};
然后在模板中使用它:
<span ng-class="getIconClass(vehicle)"></span>
或者,您可以编写自定义过滤器来完成这项工作:
.filter('kebabcase', function() {
return function (value) {
return value && value.replace(/_/g, '-');
};
});
然后像这样使用它:
<span ng-class="'di-icon-type-' + vehicle.type + '-' + vehicle.sub_type | kebabcase"></span>
示例Plunker: http://plnkr.co/edit/dRj6Sf3NeUq8IxnBshyE?p=preview
答案 1 :(得分:0)
span(ng-class="'di-icon-type-' + vehicle.type.replace(/_/g, "-") + '-' + vehicle.sub_type")
应该适合你