如何将动态属性传递给自定义验证器
how pass dynamic attribute to custom validator
我正在构建一个自定义验证器作为组件的指令,我试图传递一个属性,但我无法检索值,只能检索我正在调用的方法的字符串。
部分代码为:
指令:
return {
restrict: 'A',
require: 'ngModel',
link: (scope, element, attributes, ngModel) => {
const myAttrib = attributes.myValidation ;
console.log(myAttrib);
...
}
组件:
my-validation="$ctrl.getmyAtt()"
控制器:
getmyAtt() { return "blah"; }
所以在控制台中我得到的是“$ctrl.getmyAtt()”而不是废话。
我怎么得到 blah?
您需要注入 $parse
服务并使用它来获取传入的实际值。
$parse(attributes.myValidation)($scope);
$parse
文档 here.
编辑:实际上,这对您的回调参数不起作用。相反,当回调需要 运行.
时,您需要将该字符串和 运行 存储为 javascript
var returnValue = scope.$eval(myAttrib);
我正在构建一个自定义验证器作为组件的指令,我试图传递一个属性,但我无法检索值,只能检索我正在调用的方法的字符串。
部分代码为:
指令:
return {
restrict: 'A',
require: 'ngModel',
link: (scope, element, attributes, ngModel) => {
const myAttrib = attributes.myValidation ;
console.log(myAttrib);
...
}
组件:
my-validation="$ctrl.getmyAtt()"
控制器:
getmyAtt() { return "blah"; }
所以在控制台中我得到的是“$ctrl.getmyAtt()”而不是废话。 我怎么得到 blah?
您需要注入 $parse
服务并使用它来获取传入的实际值。
$parse(attributes.myValidation)($scope);
$parse
文档 here.
编辑:实际上,这对您的回调参数不起作用。相反,当回调需要 运行.
时,您需要将该字符串和 运行 存储为 javascriptvar returnValue = scope.$eval(myAttrib);