2014-06-23 53 views
17

AngularJS中是否有任何實用函數將破折號字符串轉換爲camelCase字符串?如:「最小最大」變成了「最小最大」如何在AngularJS中將破折號轉換爲camelCase?

這是相當簡單的,以實現自己的功能:

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

但是,我知道,角已經這樣做了(如指令名),所以我不知道有可能使用Angular的機制?

回答

9

在angular中,這是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])/; 
49

您可以訪問到角的駝峯功能的指令內:

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

最好的!

+4

先生,你是一位真正的學者和紳士!不知道'$ normalize'存在。 –

+12

任何人都知道這與此相反嗎?那就是「ngModel」=>「ng-model」,而不是'「ngModel」.replace(/([A-Z])/ g,' - $ 1')toLowerCase();'? – Campbeln

+2

@Campbeln'$ normalize'處理各種輸入格式,但是你可以像[this]那樣規範化爲任意格式(https://jsfiddle.net/ricksmt/egaewd1j/1/)。 – ricksmt

相關問題