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

Javascript 如何限制自定义指令的可能属性值?,javascript,angularjs,Javascript,Angularjs,目前我正在尝试: module.directive('myDirective', function() { return { scope: { foo: '@' }, template: '{{foo}}', link: function(scope) { if (scope.foo != 'first' && scope.foo != 'second') throw ne

目前我正在尝试:

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

但是有没有更具角度的方法呢?

当您有一组像enum这样的值可以传递给指令时,您应该让控制器和指令都可以使用这组值

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


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

谢谢,但听起来很复杂:真的吗,角度?事实上,javascript从来不会限制传递给函数的内容。这在Javascript中,在Angular中没有什么不同。Angular可以很容易地提供一种机制,也许可以,但我们都不知道,当然,这是可能的,但这是我的答案: