2015-11-08 26 views
1

我在angularjs中創建了一個指令。在link我試圖通過attrs獲得屬性。他們都被正常化爲駝峯形式。但我想重新插入到其他元素。所以我想將camelCased值轉換爲以短劃線定界的值。即Denormalize的值。角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 
      } 
     } 
    }; 
}); 

我可以正常化一個破折號分隔的值給camelCased的值,但是我應該怎麼做才能使它們非規範化。
所以在這裏我的實際問題是保留破折號屬性

回答

0

$attrattr$attr包含有關原始屬性名稱和規格化的信息,因此當您規範化屬性名稱時 - 您可以通過attr.$attr[normalisedAttrName]訪問原始名稱。

而且不要忘了簡單的檢查

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

對於示例:

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