2012-08-24 46 views
57

Tôi đang tìm hiểu về AngularJS và xem nó bổ sung thêm một số thuộc tính riêng của mình mà cũng không bắt đầu với dữ liệu không phải là thẻ html các thuộc tính chuẩn, như thế này:AngularJS thẻ thuộc tính

<html ng-app> 

hay này:

<body ng-controller="PhoneListCtrl"> 

Nơi nào các thuộc tính này đến và đó là một HTML hợp lệ? Tôi có thể đọc thêm về điều này ở đâu?

Trả lời

51

Nói đúng các thuộc tính bổ sung này không được xác định trong thông số HTML do đó, không phải là HTML hợp lệ. Bạn có thể nói rằng AngularJS cung cấp và phân tích một superset của đặc tả HTML.

Tuy nhiên, kể từ v1.0.0rc1, bạn có thể sử dụng thuộc tính data- *, ví dụ: <html data-ng-app> mà tôi tin là HTML5 hợp lệ. Source.

Có hướng dẫn về số AngularJS Compiler có chứa một số thông tin khác về quy trình. Nói ngắn gọn; trình biên dịch AngularJS đọc trang HTML của bạn, sử dụng các thuộc tính này để hướng dẫn nó khi nó chỉnh sửa và cập nhật trang của bạn, sau khi tải, thông qua javascript và HTML DOM.

+2

Chỉ cần để nguyên, ** yes **, 'data-X' rõ ràng là tương thích với HTML5, vì tiền tố' data-'là dành cho các thuộc tính tùy chỉnh. – WhyNotHugo

8

từ đâu đến làm những thuộc tính * ng- đến

Từ chính ng module. Source code.

là HTML hợp lệ phải không?

No. Nhưng chỉ thị kiểu thuộc tính có thể được thêm tiền tố x- hoặc dữ liệu để làm cho trình xác thực HTML tuân thủ. Xem direcives documentation.

27

Từ các tài liệu: http://docs.angularjs.org/guide/directive

<!doctype html> 
<html data-ng-app> 
    <head> 
    <script src="http://code.angularjs.org/1.0.7/angular.min.js"></script> 
    <script src="script.js"></script> 
    </head> 
    <body> 
    <div data-ng-controller="Ctrl1"> 
     These are all valid directive declarations:<br/> 
     <input ng-model='name'> <hr/> 
     <span ng:bind="name"></span> <br/> 
     <span ng_bind="name"></span> <br/> 
     <span ng-bind="name"></span> <br/>   
     <span x-ng-bind="name"></span> <br/> 
     <span data-ng-bind="name"></span> <br/> 
    </div> 
    </body> 
</html> 

Tôi thích khai data-*whatever* là tốt nhất vì nó là HTML5 tuân thủ.

Vì vậy, đối với bất kỳ tuyên bố Góc nào của tôi (ví dụ: ng-controller, ng-app, ng-repeat v.v.) hoặc chỉ thị tùy chỉnh, tôi sẽ luôn đặt tiền tố cho chúng là data-.

-1

Tùy chọn khác là bỏ qua tên thuộc tính chưa được xác định. Nếu bạn đang sử dụng Eclipse, bạn có thể thiết lập điều này bằng cách vào dự án properties>>validation>>html syntax>>attributes>>ignore undefined attribute names.

+1

Trong khi điều này hữu ích, nó dường như không trả lời câu hỏi ... –

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