有时我会看到大括号,但有时候没有。我搜索了很多,但我找不到正确的问题
带花括号
iter_list_reduspeeds = split_reduspeeds.erase(iter_list_reduspeeds);
std::advance(iter_list_reduspeeds, -2);
没有大括号
ng-src="{{imageSrc}}
我问的是为什么我们不能将ng-hide="imageSrc"
写成
ng-hide
为什么ng-hide="{{imageSrc}} // doesn't work anyway
和src
有两种不同的语法?
答案 0 :(得分:6)
它完全取决于您使用的指令是“声明”的方式。
如果指令具有以下声明:
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
答案 1 :(得分:6)
因为他们意味着两件不同的事情。 当你使用它时:
<span data-ng-bind="test">
这意味着angular将转到范围并从test获取值,并将test作为键。所以价值将是$ scope.test。但归属价值将是&#34; test&#34;
使用时
ng-src="{{imageSrc}}
然后将评估值并将其放置到属性中。因此值将是$ scope.imageSrc和属性值将是$ scope.imageSrc。
但是。并非所有标签都可以等待评估。他们认为值{{}}是正确的,不会被更改。这导致了糟糕的要求。为了解决这个问题,创建了ng-src。
答案 2 :(得分:4)
你不能写,因为两者都有不同的含义,请看这个链接 ,它完全是关于表达和模板参数。
https://docs.angularjs.org/api/ng/directive/ngSrc
ng-src=template
您可以在参数
中找到它https://docs.angularjs.org/api/ng/directive/ngHide
ng-hide=expression
您也可以在参数
中找到它