首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当点击vuejs和pug中的一个标签时,会调用所有锚标签的onclick函数

问当点击vuejs和pug中的一个标签时,会调用所有锚标签的onclick函数
EN

Stack Overflow用户
提问于 2019-04-01 16:32:16
回答 2查看 463关注 0票数 0

我有4个带有相同onclick函数的锚标签,但是当我点击一个标签时,所有标签的onclick函数都会被调用

代码语言:javascript
复制
ul.menu-list 
   router-link(tag="li" to="/reports")
     a.has-text-white(:onclick='selectTab("reports")') Report
   router-link(tag="li" to="/adList")
     a.has-text-white(:onclick='selectTab("adSet")') AdSet
   router-link(tag="li" to="/adSetList")
     a.has-text-white(:onclick='selectTab("adSetList")') AdSetList
   router-link(tag="li" to="/sites")
     a.has-text-white(:onclick='selectTab("sites")') Sites

onclick函数为:

代码语言:javascript
复制
selectTab(tabName: string) {
    console.log(tabName);
}

所以我想知道为什么当我点击报告时,所有标签的onclick函数都被调用了?

在这种情况下,所有"report“、"adSet”、"adSetList“、"sites”都会被记录

EN

回答 2

Stack Overflow用户

发布于 2019-04-01 18:02:53

您的语法不正确!它不是绑定syntax.You需要使用@click="selectTab('reports')"或v-on:click="selectTab('reports')"的vue事件;至于记录器,这是因为当vue组件初始化时,它会自动调用依赖数据的getter来获取依赖关系!

票数 0
EN

Stack Overflow用户

发布于 2019-04-01 19:30:19

如果您将单击event放在router-link上,并稍微更改一下语法,properly.You应该将:onclick更改为v-on:click或@click,当使用时,单击event on router-link将.native添加到事件中。下面是一个示例:

​

代码语言:javascript
复制
const Home = {
    template: '<div id="home">Reports</div>'
}

const Component1 = {
    template: '<div id="component1">Adset</div>'
};

const Component2 = {
    template: '<div id="component2">Adsetlist</div>'
};
const Component3 = {
    template: '<div id="component3">sites</div>'
};

const routes = [
    { path: '/reports', component: Home },
    { path: '/adList', component: Component1 },
    { path: '/adSetList', component: Component2 },
    { path: '/sites', component: Component3 },
]

const router = new VueRouter({
    routes
});

new Vue({
  el: '#app',
  router,
  data: {
    
  },
  methods: {
    selectTab(tabName) {
       console.log(tabName);
    }
  }
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-router/3.0.2/vue-router.min.js"></script>
<body class="text-center body">
  <div id="app">
     <ul class="menu-list">
       <router-link tag="li" to="/reports" v-on:click.native="selectTab('reports')">
         <a class="has-text-white">Report</a>
       </router-link>
       <router-link tag="li" to="/adList" v-on:click.native="selectTab('adSet')">
         <a class="has-text-white">AdSet</a>
       </router-link>
       <router-link tag="li" to="/adSetList" v-on:click.native="selectTab('adSetList')">
         <a class="has-text-white">AdSetList</a>
       </router-link>
       <router-link tag="li" to="/sites" v-on:click.native="selectTab('sites')">
         <a class="has-text-white">Sites</a>
       </router-link>
    </ul>
    
    <router-view></router-view>
  </div>
</body>

​

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

https://stackoverflow.com/questions/55450917

复制
相关文章

相似问题

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