【问题标题】:Is there any way to call more than one function from a vue.js directive?有没有办法从 vue.js 指令中调用多个函数?
【发布时间】:2016-06-16 09:24:10
【问题描述】:

有没有办法从 vue.js 指令中调用多个函数?

我知道我可以创建一个调用另外两个的函数。

我想知道是否可以从 html 文件中为同一事件调用两个函数。

例如:

<input type="text"
       v-on:keyup.enter="myFirstFunction()"
       v-on:keyup.enter="mySecondFunction()"    
>
</input>

不幸的是,这似乎只绑定了第一个函数。

【问题讨论】:

    标签: vue.js


    【解决方案1】:

    这实际上是行不通的,因为像 v-on:keyup 这样的指令只是浏览器的元素属性,你不能在一个元素上有重复的属性。

    所以是的,您必须创建一个调用其他两个的方法。

    函数之间没有关联,也不是通过代码在同一个组合中使用,所以,添加组成它们的代码是没有意义的

    我不这么看。在这种情况下,这些函数显然是 相关的——它们是从同一个事件中调用的。一个简单的两行方法解决了这个问题。

    【讨论】:

    • “元素上的属性不重复”的解释是有道理的,但我在想 vue.js 可能允许从同一个属性调用两个函数。我要等一会儿,如果没有人告诉我这是可能的,我会接受你的回答。
    • 关于相关功能:它们只是在同一事件之后发生的意义上相关,而不是概念意义上的相关。我的理解是,如果只有这种情况发生,我们正在添加不抽象任何东西的代码。想象一下,你有 20 个不同的功能,它们以不同的方式组合在一起;你会为每个可能的组合完成一个函数。在这种情况下,明智的做法是分别调用每个函数。
    【解决方案2】:

    尝试在您的第一个函数中调用您的第二个函数,或者创建一个同时调用两个函数的第三个函数,然后调用它。这是因为事件只被识别一次。

    【讨论】:

    • 这正是我想要避免的(正如我在问题中所说)。函数之间没有关联,也不是通过代码在同一个组合中使用,所以添加组成它们的代码是没有意义的。
    【解决方案3】:
    <input type="text"
           v-on:keyup.enter="myFirstFunction() & mySecondFunction()"
    >
    </input>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      相关资源
      最近更新 更多