有时在角形中我看到花括号,但有时没有。我搜索了很多,但找不到正确的问题
带花括号
ng-src="{{imageSrc}}
不带花括号
ng-hide="imageSrc"
什么我问的是,为什么我们不能写ng-hide为
ng-hide
ng-hide="{{imageSrc}} // doesn't work anyway
为什么有2不同的语法src和hide?
src
hide
它仅取决于“声明”所使用指令的方式。
如果指令具有以下声明:
scope:{ ngHide: '=' }
那么,您不必使用双胡须,因为该指令需要一个对象
如果指令的声明如下:
scope:{ ngMin:'@' }
然后,它期望一个值。如果您的值来自javascript变量,则必须使用大括号将包含在变量中的字符串插入。
编辑:
自从我阅读有角度的源代码以来已经有很长时间了。
我尚未找到任何源代码来证明我的观点:
ngController 期望像下面这样声明一个字符串
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