如何限制自定义指令的可能属性值

How can I restrict the possible attribute values of a custom directive?

本文关键字:属性 何限制 自定义 指令      更新时间:2023-09-26

当前我正在尝试:

module.directive('myDirective', function() {
    return {
        scope: { foo: '@' },
        template: '{{foo}}',
        link: function(scope) {
            if (scope.foo != 'first' && scope.foo != 'second')
              throw new Error("Only values 'first' and 'second' allowed for attribute 'foo' of myDirective");
        }
    };
});

但有没有一种"更有棱角"的方式?

当您有一组可以传递给指令的值(如枚举)时,您应该使该集对控制器和指令都可用。

例如,如果只能传递某些颜色,则应创建一个颜色常量,并将该常量注入控制器和指令中。从控制器将其传递给指令,并在指令中对照颜色常量集合进行检查。

我不认为你能让支票本身更容易,或者更像"棱角分明的方式"。但是,您可以创建一个工厂方法来检查颜色是否是来自常量的有效颜色。