是否可以观察触发指令的属性?
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 属性,除了我不知道它是由程序员重用我的指令命名的那样:
我正在尝试创建一个验证指令,该指令将采用任意表达式并将其用于验证。一个典型的例子是 ngMin 和 ngMax ,除了我想为任意输入类型实现类似的功能:
<input type="number" ng-model="someModel" />
<input type="text" myprefix-max="someModel*0.5" />
答案 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);
}