2015-11-01 20 views
14

Khi chỉ thị angularJ được định nghĩa, chúng ta phải đặt tên nó theo dạng cú pháp 'camelCase' nhưng khi chúng ta sử dụng nó, chúng ta phải đặt tên nó theo dạng 'camel-case'. Câu hỏi là tại sao điều này là bắt buộc?AngularJs quy tắc đặt tên chỉ thị

Tôi biết rằng đó là để tránh đặt tên xung đột (hiện tại/trong tương lai) nhưng tại sao chúng ta phải đặt tên cho nó khác nhau trong khi xác định và trong khi sử dụng. Chúng ta không thể định nghĩa nó trực tiếp dưới dạng 'lạc đà'?

Trả lời

21

Có hai lý do khiến việc này quan trọng.

Trước hết, thuộc tính HTML không phân biệt chữ hoa chữ thường, có nghĩa là "someName" và "somename" là thuộc tính giống nhau. Vì vậy, phong cách tốt nhất là sử dụng ký hiệu "kebab-case" để phân tách các từ trong tên thuộc tính. Đó là lý do tại sao chúng tôi sử dụng cú pháp "tên thuộc tính" cho thuộc tính HTML và tên thẻ.

Mặt khác, tên trường hợp kebab không phải là số nhận dạng hợp lệ trong Javascript nên để sử dụng các tên như chỉ thị Góc, chúng tôi sẽ phải sử dụng chi tiết bracket notation. Nhưng vì trong camelCase trên thế giới Javascript là tiêu chuẩn de-facto để đặt tên biến và thuộc tính đối tượng, Angular sử dụng normalization (see source) để chuyển đổi tên kebab-case thành camelCase và ngược lại.

+0

Cảm ơn rất nhiều dfsq. Có ý nghĩa! – Parashuram

+0

Bây giờ chi nhánh chủ angularjs là xa nó đã được rằng thời gian bạn thực hiện các tài liệu tham khảo. Đó là lý do tại sao tham chiếu thực sự không mang lại gì cho người đọc. Để tránh điều này, xin vui lòng, hãy tham chiếu đến một kho lưu trữ không phải ở nhánh chính, nhưng tốt hơn ở một trạng thái cam kết cụ thể. –

+0

@ a-bobkov cảm ơn, liên kết đã sửa – dfsq

0

Chỉ thị phải có tên trường hợp lạc đà (ví dụ, fooBarDirective) vì AngularJS chuyển đổi lạc đà tên trường hợp chỉ để gạch nối trường hợp .Đối dụ

<foo-bar-directive> 

hoặc

< ... foo-bar-directive> 

để sử dụng trong HTML (mà phân biệt chữ hoa chữ thường).

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