【问题标题】:VueJS - How to apply directives to all matching tags?VueJS - 如何将指令应用于所有匹配的标签?
【发布时间】:2017-06-19 21:21:34
【问题描述】:

我想以编程方式将指令应用于所有input 标签。造成这种情况的两个原因是:

  1. 我不想通过我的应用程序中的所有输入来添加指令
  2. 如果我想在以后更改针对所有输入的指令,它在一个地方。

这可能吗?我已经查看了docs,但他们似乎没有提到以任何其他方式应用它,而不是将标签直接应用于元素。

我现在的代码是这样的:

<input type="text" class="form-control input-sm" id="price" v-model="model.doc.price" v-floating-label>

【问题讨论】:

  • 你想有条件地添加那个指令吗?
  • @DivyanthJayaraj 不是现在这样,但我可以看到该要求的潜力,所以如果可能的话,是的。

标签: javascript vuejs2 vue.js vue-directives


【解决方案1】:

您可以将该指令绑定到这样的条件

<input type="text" 
       class="form-control input-sm" 
       id="price" 
       v-model="model.doc.price" 
       :v-floating-label=(condition)>

如果 condition == truev-model-float 指令将应用于您的输入。

更新 1:在 cmets 中,实现仍然是相同的,除了您从一个地方控制条件。这样,您以后只需将该条件设置为 false 即可删除该指令。

【讨论】:

  • 我知道如何将指令应用于输入(我的原始代码显示了这一点)。我想以编程方式将其应用于 ALL 输入。 P.s 我已将问题编辑得更清楚。
  • 所以你想让你的 vue 应用解析 DOM,找到输入标签并应用那个指令?
  • 那么在编写代码时,您不是希望每次在模板中有输入标签时自动添加该指令吗?
  • @webnoob Vue 是否在构建您的 HTML?如果不是,为什么不呢?这就是它的全部意义。
  • @Tomalak 是的,你是对的。我似乎有一个糟糕的时刻:) 头被困在一件事上,不会放手......叹息。
【解决方案2】:

根据埃文·尤:

Vue.js 编译发生在您实例化/挂载根实例时。

https://github.com/vuejs/Discussion/issues/77#issuecomment-60339440

我不认为您正在尝试做的事情是理智的:搜索和替换,在许多文本编辑器或 IDE 中开箱即用,对您解释的两个原因非常有帮助。

【讨论】:

    【解决方案3】:

    我似乎有一个脑死亡的时刻。我只需要一个input 组件。然后我可以在那里更改我需要的内容,它会在所有使用输入组件的地方更新,而不是使用标准的 html input 标签,我将使用我的组件。

    漫长的一天...

    我自己回答了这个问题,而不是删除它,以防其他人将来有同样的脑死时刻;)

    【讨论】:

    • 你成就了我的一天!
    猜你喜欢
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 2021-07-23
    • 2020-04-09
    相关资源
    最近更新 更多