如何将动态属性传递给自定义验证器

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);