首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VueJS发出到VueJS之外的函数。

VueJS发出到VueJS之外的函数。
EN

Stack Overflow用户
提问于 2017-05-03 08:43:59
回答 1查看 3K关注 0票数 1

我正在尝试从我的VueJS组件中发出一些东西到一个位于包含该组件的html页面中的函数。我是不是漏掉了什么,还是这不可能?

在我的组件中作为一种方法:

代码语言:javascript
复制
insert: function(){
    this.$emit('insertItem', 123);
}

在包含组件的页面中:

代码语言:javascript
复制
<medialibrary @insertItem="insertItem(arg);"></medialibrary>


<script>
    function insertItem(arg){
        console.log('insertItem');
        console.log(arg);
    }
</script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-03 13:26:49

这实际上比乍看上去更有可能。如果函数是全局的(尤其是对父Vue可见的),则Vue可以调用它,即使它不是Vue的方法。(可以说,创建一个调用全局函数的方法是一个更好的主意。)

您的代码的主要困难是camelCasing,它应该是kebab-case。

如果您希望insertItem$emit获取arg,HTML只应该给出函数名,Vue将负责传递args:

代码语言:javascript
复制
<medialibrary id="app" @insert-item="insertItem"></medialibrary>

我的代码片段使用您的原始代码,它从父Vue提供arg。

代码语言:javascript
复制
function insertItem(arg) {
  console.log('insertItem');
  console.log(arg);
}

new Vue({
  el: '#app',
  data: {
    arg: 'hi there'
  },
  components: {
    medialibrary: {
      template: '<div><button @click="insert">Insert</button></div>',
      methods: {
        insert() {
          console.log("Emit");
          this.$emit('insert-item', 123);
        }
      }
    }
  }
});
代码语言:javascript
复制
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.3.2/vue.min.js"></script>
<medialibrary id="app" @insert-item="insertItem(arg);"></medialibrary>

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43755226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档