2014-06-23 11 views
17

Có chức năng tiện ích nào trong AngularJS chuyển đổi chuỗi ký tự gạch ngang thành chuỗi camelCase không? ví dụ như: "min-max" trở thành "MinMax"Làm thế nào để chuyển đổi dash-case sang camelCase trong AngularJS?

Đó là khá đơn giản để thực hiện chức năng của riêng tôi:

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

Nhưng, tôi biết rằng góc đã thực hiện điều này (ví dụ như tên chỉ thị), vì vậy tôi tự hỏi, nếu có thể sử dụng cơ chế mà Angular có?

Trả lời

9

Trong góc này là một phần của jqlite, việc thực hiện jquery tối giản mà chúng đang sử dụng trong nội bộ. Tôi không nghĩ rằng có một cách để truy cập vào đó bởi vì tôi tin rằng nó là riêng tư. Đây là chức năng mặc dù:

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

đâu

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

Bạn có thể truy cập vào chức năng camelCase góc của bên trong một chỉ thị:

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

tốt nhất!

+4

Thưa bạn, bạn là một học giả và quý ông thực sự! Không biết '$ normalize' đã tồn tại. –

+12

Bất cứ ai biết điều ngược lại? Đó là "ngModel" => "ng-model" khác với '" ngModel ".replace (/ ([A-Z])/g, '- $ 1'). ToLowerCase();'? – Campbeln

+2

@Campbeln '$ normalize' xử lý các định dạng đầu vào khác nhau, nhưng bạn có thể bình thường hóa thành một định dạng tùy ý làm một cái gì đó như [this] (https://jsfiddle.net/ricksmt/egaewd1j/1/). – ricksmt

Các vấn đề liên quan