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

时间:2015-03-18 14:34:56

标签: javascript angularjs

目前我正在尝试:

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

但是有更多的角度"方式是什么?

1 个答案:

答案 0 :(得分:0)

如果您有一组可以传递给指令的值(如枚举),则应该将此集设置为控制器和指令。

例如,如果只能传递某些颜色,则应创建颜色常量并在控制器和指令中注入此常量。从控制器中将它传递给指令,并在指令中检查颜色常量集合。

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