Tên chỉ thị Angular: chỉ cho phép các chữ cái thường?


76

Mã của tôi:

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 không? Hoặc có các quy tắc đặt tên đặc biệt cho chỉ thị Angular?

Câu trả lời:


118

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 cho rằng sẽ giúp người xác thực hài lòng. Những người khác thích sử dụng 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í viết hoa tất cả ABC_ABC. Hoặc các thuộc tính mở rộng như x-abc-abc.

AngularJS chuẩn hóa tên được sử dụng trong HTML để cố gắng bao hàm tất cả các trường hợp này. data-x-đang tước, phần còn lại camelcased với :, -_như ranh giới từ. Điều này tạo ra abcAbctừ 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.

Tất cả điều này được gọi là chuẩn hóa thuộc tính (US: thuộc tính chuẩn hóa) và có thể được tìm thấy trong tài liệu AngularJSmã nguồn .


6
Cảm ơn vì điều này! Tôi đọc tài liệu là "bạn có thể làm điều đó theo cách nào đó" nhưng rõ ràng không phải vậy. Tôi ngạc nhiên vì điều này chỉ có 10 lượt ủng hộ cho đến nay.
spikeheap

Nó cũng phù hợp với không gian tên các thành phần web: webcomponents.github.io/articles/web-components-best-practices
Rui Nunes

2
Tôi đã thay đổi đoạn cuối thành sử dụng dạng tiếng Anh Mỹ của từ "normalization" thay vì "normalization" của tiếng Anh vì tài liệu Angular sử dụng chính tả tiếng Anh và tìm kiếm chúng cho chính tả tiếng Anh không trả lại bất kỳ kết quả nào.
Samuel Neff

1
bất ngờ tồi tệ nhất xảy ra khi bạn nhận ra rằng bạn nên bắt đầu tên chỉ thị bằng các chữ cái nhỏ, không viết hoa.
sazary

1
@sazary Tại sao điều này lại là một bất ngờ? Cách viết hoa của nó phù hợp với tất cả các định danh javascript khác trong Angular.
MEMark

25

Bạn nên sử dụng các 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 tài liệu: Angular sử dụng tên có dấu gạch ngang cho tên thuộc tính và camelCase cho tên chỉ thị tương ứng)

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


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

0

Chà, tên chỉ thị phải là tất cả các chữ thường, ít nhất là trong phiên bản AngularJS 1.4.9, nếu không tôi gặp lỗi không thể tìm thấy $ injection

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.