小编典典

使用花括号时的角度

angularjs

有时在角形中我看到花括号,但有时没有。我搜索了很多,但找不到正确的问题

带花括号

ng-src="{{imageSrc}}

不带花括号

ng-hide="imageSrc"

什么我问的是,为什么我们不能写ng-hide

ng-hide="{{imageSrc}} // doesn't work anyway

为什么有2不同的语法srchide


阅读 220

收藏
2020-07-04

共1个答案

小编典典

它仅取决于“声明”所使用指令的方式。

如果指令具有以下声明:

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

2020-07-04