2012-08-24 185 views
57

我正在學習有關AngularJS,看看它增加了一些自己的屬性,那也不符合數據開始也不是標準的HTML標籤屬性,像這樣:AngularJS標籤屬性

<html ng-app> 

或本:

<body ng-controller="PhoneListCtrl"> 

從哪裏來這些ng- *屬性來,是一個有效的HTML?我在哪裏可以閱讀更多關於此?

回答

51

嚴格地說,這些額外的屬性沒有在HTML規範中定義,因此不是有效的HTML。你可以說AngularJS提供並解析了HTML規範的一個超集。

但是,從v1.0.0rc1開始,您可以使用data- *屬性,例如<html data-ng-app>,我相信這些屬性是有效的HTML5。 Source

有一個AngularJS Compiler指南,其中包含有關該過程的更多信息。簡而言之; AngularJS編譯器讀取您的HTML頁面,使用這些屬性來指導它,因爲它在加載後通過javascript和HTML DOM編輯和更新頁面。

+2

爲了清楚,** yes **,'data-X'符合HTML5,因爲'data-'前綴是用於自定義屬性的。 – WhyNotHugo

27

從文檔: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> 

我喜歡data-*whatever*聲明中最好的,因爲它是兼容HTML5。

所以對我的任何角度聲明(例如ng-controllerng-appng-repeat等)或自定義指令和我永遠data-前綴他們。

-1

另一種選擇是忽略未定義的屬性名稱。如果您使用Eclipse,則可以通過轉到項目properties>>validation>>html syntax>>attributes>>ignore undefined attribute names來設置此項。

+1

儘管這很有用,但似乎並沒有回答這個問題。 –