你能看到触发指令的属性吗?

时间:2016-01-19 20:44:45

标签: javascript angularjs

是否可以观察触发指令的属性?

export function minDirective(): ng.IDirective {
  return {
    restrict: 'A',
    require: 'ngModel',
    link: (scope, elem, attr, ctrl) => {
      scope.$watch(<name of the attribute>, () => {
        // Do something
      });
    }
  };
}

我想听下面示例中的 bb-civic-registration-number-format 属性,除了我不知道它是由程序员重用我的指令命名的那样:

enter image description here

我正在尝试创建一个验证指令,该指令将采用任意表达式并将其用于验证。一个典型的例子是 ngMin ngMax ,除了我想为任意输入类型实现类似的功能:

<input type="number" ng-model="someModel" />
<input type="text" myprefix-max="someModel*0.5" />

2 个答案:

答案 0 :(得分:0)

如果我正确理解了问题,您可以使用属性值和[]表示法。

<element my-directive scope-var="controllerScopePropertyName"></element >

JS

export function myDirective(): ng.IDirective {
  return {
    restrict: 'A',
    require: 'ngModel',
    link: (scope, elem, attr, ctrl) => {

      // using ES5 syntax
      scope.$watch(function(){
          return scope[attr.scopeVar];
      }, function(newVal,oldVal){
         // do something
      });
    }
  };
}

或者只是设置隔离范围并直接绑定到控制器

答案 1 :(得分:0)

您实际上可以在编译函数中获取指令的名称,这样您就可以通过将值与属性集合进行比较来查找该值。

compile: function (elem, attrs) {
    console.log(this.name);
}