我只是想知道爲什麼我需要爲ng-href添加雙花括號,而其他一些指令不需要它們?爲什麼指令ng-href需要{{}}而其他指令不需要?
<a ng-href="{{myScopeVar}}" ng-if="myScopeVar">link</a>
注意ng-href
需要括號而ng-if
沒有。
我只是想知道爲什麼我需要爲ng-href添加雙花括號,而其他一些指令不需要它們?爲什麼指令ng-href需要{{}}而其他指令不需要?
<a ng-href="{{myScopeVar}}" ng-if="myScopeVar">link</a>
注意ng-href
需要括號而ng-if
沒有。
我不太清楚你的問題。但我認爲你想知道爲什麼在角度指令中有不同的語法樣式。首先,請看看這個帖子:Difference between double and single curly brace in angular JS?答案解釋了{{}}
,{}
之間的區別,沒有大括號。
對於您的具體示例,如文檔中所述:ng-href
需要模板(任何可包含{{}}
標記的字符串),而ng-if需要表達式 - 例如,你可能不會寫{{}}
,因爲角度評估它。
如果你看看你會看到的角源,那麼ng-href
使用attr.$observe
而ng-if使用$scope.$watch
函數。對於屬性值的每次更改,都會記錄$ observe。當表達式產生一個新值時,$ watch被調用。
但爲什麼這兩種不同的方式呢?我認爲有一點更容易使用和代碼可讀性。現在你可以這樣寫:
<a ng-href="http://yourdomain.com/users/{{userId}}/post/{{postId}}">title</a>
正如你所看到的,你只寫了動態插入userId
和postId
值的表達式。如果ng-href
也將使用$watch
功能,我們不得不寫(不這樣做,因爲它西港島線無法正常工作 - 它只是表明了區別):
<a ng-href="'http://yourdomain.com/users/'+userId+'/post'+postId">title</a>
即使IUSE ng-href
data-ng-href
它拋出的錯誤進行驗證。 我用<link rel="stylesheet" data-ng-href="{{datas}}" href="/">
爲了通過驗證錯誤。
希望它可以幫助別人
只是假設要建立動態的URL,例如:'NG-HREF = 「#/ foobar的/ {{barfoo}}」'。您也可以閱讀[手冊]中的說明(http://docs.angularjs.org/api/ng.directive:ngHref)以獲取更長的解釋。 – Yoshi