在角有時我看到大括號但有些時候not.i搜索了很多,但沒有花我無法找到正確的問題角時要使用大括號
用花括號
ng-src="{{imageSrc}}
支架
ng-hide="imageSrc"
什麼我問的是,爲什麼我們不能寫ng-hide
作爲
ng-hide="{{imageSrc}} // doesn't work anyway
爲什麼對於src
和hide
有兩種不同的語法?
在角有時我看到大括號但有些時候not.i搜索了很多,但沒有花我無法找到正確的問題角時要使用大括號
用花括號
ng-src="{{imageSrc}}
支架
ng-hide="imageSrc"
什麼我問的是,爲什麼我們不能寫ng-hide
作爲
ng-hide="{{imageSrc}} // doesn't work anyway
爲什麼對於src
和hide
有兩種不同的語法?
它只是取決於您使用的指令是「聲明」的方式。
如果指令有以下聲明:
scope:{
ngHide: '='
}
那麼,你不必如果該指令宣佈類似下面使用雙小鬍子,因爲該指令預計的對象
:
scope:{
ngMin:'@'
}
然後,它期望一個值。如果你的值來自一個JavaScript變量,那麼你必須使用大括號來插入你的變量中包含的字符串。
編輯:
它一直以來我讀角源代碼長的時間。
我還沒有發現任何的源代碼,以證明我的觀點:
ngController
這需要一個字符串聲明類似如下
var ngControllerDirective = [function() {
return {
restrict: 'A',
scope: true,
controller: '@',
priority: 500
};
}];
https://github.com/angular/angular.js/blob/master/src/ng/directive/ngController.js#L3
ngMaxLength
var maxlengthDirective = function() {
return {
restrict: 'A',
require: '?ngModel',
link: function(scope, elm, attr, ctrl) {
if (!ctrl) return;
var maxlength = -1;
attr.$observe('maxlength', function(value) {
var intVal = toInt(value);
maxlength = isNaN(intVal) ? -1 : intVal;
ctrl.$validate();
});
ctrl.$validators.maxlength = function(modelValue, viewValue) {
return (maxlength < 0) || ctrl.$isEmpty(viewValue) || (viewValue.length <= maxlength);
};
}
};
};
https://github.com/angular/angular.js/blob/master/src/ng/directive/validators.js#L186
因爲它們是指兩種不同的東西。 當您使用此:
<span data-ng-bind="test">
這意味着角會去的範圍,並從那裏得到的值與測試的關鍵。所以價值將是$ scope.test。但attribte值將是「測試」
當您使用
ng-src="{{imageSrc}}
那麼值將被評估,並放置該屬性。因此值將$ scope.imageSrc和屬性值將爲$ scope.imageSrc。
但是。並非所有的標籤都可以等待評估。他們認爲價值{{}}是正確的,不會被更改。這導致糟糕的請求。爲了解決這個問題,創建了ng-src。
但是在'ng-hide ='imgSrc''的值應該被評估並替換?對不起,我很困惑 –
不可以讓我們拆分問題。這裏是我們的跨度: 測試 注意class屬性。當DOM被渲染時,瀏覽器將會看到class =「myClass」。因爲它是適合的格式,所有都會沒事的。 然後,角度上升。它會看到data-ng-hide =「imgSrc」,進入範圍並獲得一個值。屬性data-ng-hide值不會被改變。但是,指令內的值將是! 然後!指令將根據最近得到的值用它自己的邏輯修改屬性類。就這樣。 – Vitalii
你不能寫,因爲兩者有不同的含義看這個鏈接 ,這一切都是關於表達式和模板參數。
https://docs.angularjs.org/api/ng/directive/ngSrc
ng-src=template
你可以找到它在論證
https://docs.angularjs.org/api/ng/directive/ngHide
ng-hide=expression
你也可以找到它的參數
→最終的答案是:RTFM爲每個指令的期望。 – deceze
謝謝你,但我應該查看角度源代碼來知道要使用什麼? –
@whiletrue閱讀樣品。大多數時候你不需要任何雙鬍子 –