如何在AngularJS中将dash-case转换为camelCase?

时间:2014-06-23 01:15:22

标签: angularjs

AngularJS中是否有任何实用程序函数将破折号字符串转换为camelCase字符串?例如:“min-max”变为“minMax”

实现我自己的功能非常简单:

function toCamelCase(name) {
  return name.replace(/-(\w)/g, function(match) {
    return match[1].toUpperCase();
  });
}

但是,我知道Angular已经这样做了(例如指令名),所以我想知道是否可以使用Angular的机制?

2 个答案:

答案 0 :(得分:50)

您可以在指令中访问angular的camelCase函数:

link: function (scope, element, attrs) {
  attrs.$normalize('ng-model'); // ngModel
  attrs.$normalize('ng:click'); // ngClick
  attrs.$normalize('ng_show'); // ngShow
}

最佳!

答案 1 :(得分:9)

在角度中,这是jqlite的一部分,jqlite是他们在内部使用的简约jquery实现。我认为没有办法访问,因为我相信它是私密的。这是功能:

function camelCase(name) {
  return name.
    replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
      return offset ? letter.toUpperCase() : letter;
    }).
    replace(MOZ_HACK_REGEXP, 'Moz$1');
}

其中

var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
var MOZ_HACK_REGEXP = /^moz([A-Z])/;