如何为Angularjs指令创建仅输入参数?

时间:2015-11-27 15:10:49

标签: javascript angularjs

我试图创建一个具有一些可配置属性的指令。为此,我将其添加到指令声明:

...
scope: {
    maxColumns: '=',
    minColumns: '=',
},
...

这样我就可以像这样使用指令:

<my-directive max-columns="maxColOnScope" min-columns="minColOnScope"></my-directive>

但我也希望能够做到这一点:

<my-directive max-columns="4" min-columns="2"></my-directive>

这最后一种情况有效,但是给出了Angular错误:$ compile:nonassign表示值4不可绑定,因此不能用于双向绑定。

这一切都很棒,但我讨厌现在我必须要么:

  • 忽略错误消息
  • 从不使用静态值,而是始终通过范围
  • 提供静态值
  • 使用@ -binding反过来会将任何输入转换为字符串,并且每当我想在范围内使用值时,也会强制我使用{{}} ...

这些选项似乎都不是特别吸引我。我错过了什么或者没有办法做我想做的事情吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以简单地使用(单个)引号来表示静态值。

<my-directive max-columns="'4'" min-columns="'2'"></my-directive>

答案 1 :(得分:0)

看起来我被这种那种愚蠢的火车击中了。

除了范围声明:

scope: {
    maxColumns: '=',
    minColumns: '=',
},

我还将bindToController值设置为true,这会导致将值作为属性添加到控制器。

这本身就是我想要的,但我偶然在比较中使用单个等号来设置控制器中的值...

只是因为值的变化,AngularJs才会给我一个消息,即该值是只读的。修复错误删除了错误消息。

我将在这里留下这个答案,以便将来的假人;)