取消属性值的规范化-将基于骆驼的值转换为以短划线分隔的值

Denormalize an attribute value - Convert a camelcased value to dash-delimited value

本文关键字:分隔 转换 规范化 属性 取消 于骆驼      更新时间:2023-09-26

我在angularjs中创建了一个指令。在link中,我尝试使用attrs获取属性。它们都被标准化为camelcasing形式。但我想把它们重新插入到其他元素中。所以我想将基于骆驼的值转换为以短划线分隔的值。即Denormalize值。在angular js中有什么简单的方法可以做到这一点吗。

module.directive('myDirective', function(){
    return {
        'link': function(scope, element, attr, controller){
            ....
            var newElement = jQuery("<div></div>");
            for(var key in attr){
                newElement.attr(attr[key]);   // !newElement will not keep dashes in attribute 
                                              // i.e. dashes will be removed from attributes
            }
        }
    };
});

我可以将以破折号分隔的值规范化为基于骆驼的值,但我应该怎么做才能取消规范化它们
因此,我的实际问题是在属性

中保留短划线

attr内部有$attr$attr包含有关原始属性名称和规范化的信息,因此当您具有规范化的属性名称时,您可以通过attr.$attr[normalisedAttrName]访问原始名称。

别忘了简单地检查

if (key.charAt(0) == '$' || attr.hasOwnProperty(key)) { continue; }

例如:

...
for(var key in attr){
  newElement.attr(attr.$attr[key], attr[key]);
}
...