2013-07-06 28 views
12

Giả sử tôi đã viết một chỉ thị tùy chỉnh gravatar trong AngularJS được ràng buộc với thuộc tính email trên phạm vi. Chỉ thị này sẽ thay thế HTML này ...Hậu quả của Thẻ HTML tùy chỉnh trong AngularJS Chỉ thị

<gravatar email="user.email" /> 

bởi một img thẻ phổ biến mà src thuộc tính được thiết lập để url Gravatar đúng:

<img src="http://gravatar.com/avatar/..." /> 

Câu hỏi của tôi có thể là một chút rộng hoặc thậm chí ngây thơ, nhưng " Làm thế nào xấu "ban đầu nó có thẻ <gravatar /> trong HTML của trang của tôi không? Có bất kỳ hậu quả "thế giới thực" nào ngoài việc không vượt qua xác nhận W3C không?

+0

Bên cạnh W3C (những người quan tâm), bạn phải [đối phó với IE] (http://docs.angularjs.org/guide/ie). Nếu không, không có gì sai với nó. – Stewie

+0

Tại sao thẻ phải là một thẻ khác? –

+0

@ExplosionPills Nó không, tôi cũng có thể hạn chế chỉ thị cho một thuộc tính. Tuy nhiên, điều đó sẽ không minh họa cho câu hỏi của tôi một cách đầy đủ. –

Trả lời

7

W3C nói

tác giả không được sử dụng các yếu tố, các thuộc tính, hoặc giá trị thuộc tính cho các mục đích khác hơn là thích hợp dành mục đích ngữ nghĩa của họ, vì làm như vậy ngăn chặn phần mềm từ chế biến một cách chính xác trang.

tác giả không được sử dụng các yếu tố, các thuộc tính, hoặc giá trị mà không được phép bởi đặc điểm kỹ thuật này hoặc other applicable specifications thuộc tính, vì làm như vậy làm cho nó khó khăn hơn đáng kể cho ngôn ngữ được mở rộng trong tương lai .

http://www.w3.org/html/wg/drafts/html/master/dom.html#elements

yếu tố Custom/thuộc tính không có giá trị ngữ nghĩa và nên tránh vì những lý do.

Có thể sẽ không có bất kỳ trực tiếp hậu quả nào mà bạn thậm chí sẽ nhận thấy. Xét cho cùng, bản thân Angular sử dụng thuộc tính không xác nhận ng (mặc dù chúng cũng hỗ trợ tiền tố data-). Vấn đề duy nhất bạn có thể phải đối mặt là nếu yếu tố bạn giới thiệu hiện là yếu tố tùy chỉnh trở thành một phần của thông số và có hành vi khác với những gì bạn mong đợi trước đây, nhưng tôi nghĩ điều đó là rất khó xảy ra. Mặc dù vậy, tôi sẽ tránh sử dụng bất cứ điều gì tùy chỉnh nếu tôi có thể.

Eventually you will be able to register your own custom elements, nhưng từ những gì tôi có thể nói, không có trình duyệt nào hỗ trợ thông số này.

4

Trong khi nguồn gốc ban đầu của trang (trước khi xử lý góc phần tử ng-app) có thể không tuân thủ các tiêu chuẩn W3C, nếu bạn sử dụng "thay thế: true" trong chỉ thị, các phần tử tùy chỉnh được thay thế bằng HTML mẫu, có thể hợp lệ. Vì vậy, trong trường hợp này, bạn có thể nghĩ về một phần tử góc như là một trình giữ chỗ được thay thế bằng đầu ra HTML đầu cuối.

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