2013-08-01 51 views
71

Mã của tôi:Tên chỉ thị góc: chỉ cho phép chữ cái viết thường?

app.directive('abcabc', function(){ alert('directive');}); // working 

nhưng

app.directive('abcAbc', function(){ alert('directive');}); // not working ! 
app.directive('abc-abc', function(){ alert('directive');}); // not working ! 

Tôi có làm sai? Hoặc có quy tắc đặt tên đặc biệt cho chỉ thị Góc?

Trả lời

116

AngularJS cố gắng làm cho mọi người hạnh phúc!

Một số người thích sử dụng các thuộc tính dữ liệu, chẳng hạn như data-abc-abc, tôi giả định giữ cho người xác thực hài lòng. Những người khác thích sử dụng các không gian tên như abc:abc và những người khác thích sử dụng tên chỉ thị thực tế abcAbc. Hoặc thậm chí là tất cả các mũ ABC_ABC. Hoặc các thuộc tính tiện ích mở rộng như x-abc-abc.

AngularJS bình thường hóa tên được sử dụng trong HTML để cố gắng bao gồm tất cả các trường hợp này. data-x- bị tước, phần còn lại được gắn liền với :, -_ làm ranh giới từ. Điều này làm cho abcAbc từ các trường hợp được đề cập ở trên, được sử dụng để tra cứu chỉ thị được khai báo trong JavaScript.

Điều này được gọi là chuẩn hóa thuộc tính (US: thuộc tính bình thường hóa) và có thể được tìm thấy trong AngularJS documentationsource code.

+6

Cảm ơn bạn cho điều này! Tôi đọc các tài liệu như "bạn có thể làm điều đó một trong hai cách" nhưng đó rõ ràng không phải là trường hợp. Tôi ngạc nhiên rằng điều này chỉ có 10 upvotes cho đến nay. – spikeheap

+0

Nó cũng là nội tuyến với các thành phần web namespacing: http://webcomponents.github.io/articles/web-components-best-practices/ –

+1

Tôi đã thay đổi đoạn cuối để sử dụng dạng tiếng Anh Mỹ của từ "bình thường hóa" thay vì tiếng Anh "bình thường hóa" kể từ khi tài liệu Góc sử dụng chính tả tiếng Anh và tìm kiếm chúng cho chính tả của Anh không trả về bất kỳ kết quả nào. –

23

Bạn nên sử dụng tên được phân tách bằng dấu gạch ngang bên trong html và camelCase cho tên tương ứng trong chỉ thị.

Như bạn có thể đọc trên doc: góc sử dụng tên-với-dấu gạch ngang cho tên thuộc tính và camelCase cho tên chỉ thị tương ứng)

đây: http://docs.angularjs.org/tutorial/step_00

+6

có thể là cách được khuyến nghị. nhưng tôi ghét điều này khi tìm kiếm chỉ thị tương ứng trong tất cả các tập tin được thực hiện tẻ nhạt hơn. đặc biệt là cho các chỉ thị với nhiều từ. – ColacX

0

Vâng, tên chỉ thị phải được tất cả các trường hợp thấp hơn, ít nhất là trong AngularJS phiên bản 1.4.9, nếu không tôi nhận được một $ inject không thể tìm thấy lỗi

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