javascript - v-on:通过更改innerhtml添加后点击不起作用
问题描述
我试图制作一个动态导航栏,其作用如下:如果会话已登录,则将导航栏从登录和注册更改为配置文件并注销,登录和注册按钮工作正常,但是通过 js 更改它们时innerHTML 他们不执行功能 v-on:click
var nav_auth = document.getElementById("nav_auth");
nav_auth.innerHTML = `
<li class="nav-item">
<a class="nav-link" href="?profile"><i class="fas fa-user-circle user-circle-icon"></i> ` +
this.user.name +
`</a>
</li>
<li class="nav-item">
<a class="nav-link" href="?logout" v-on:click="logout()"> Logout </a>
</li>`;
解决方案
让vue改变dom。使用 v-if/else(或 v-show/hide)有条件地渲染(或包含)dom 中的元素。
new Vue({
el: '#example',
data: {
user: true,
}
})
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<html>
<body>
<div id="example">
<div v-if="user">
<button @click="user=!user">Logout</button>
<button>Profile</button>
</div>
<div v-else>
<button @click="user=!user">Login</button>
</div>
</div>
</body>
</html>
推荐阅读
- php - 从另一个表 SQL 的值更新列值
- visual-studio-code - VSCode cmd + 单击 goto 实现而不是定义
- reactjs - React - 日期以两种不同的方式显示
- python - Square Up python API 创建支付
- ios - 如何在swift ui watch os中的同一屏幕中添加键盘和文本字段
- javascript - 比较两个 json 对象并附加唯一项
- java - JAVA中String到Int array[]的转换大小问题
- reactjs - 如何从 React JS 中的列表数据生成多页 pdf
- python-3.x - ModuleNotFoundError:没有名为“堆栈”的模块
- wordpress - 是否有任何 REST API 端点或 graphql 模式来获取仅与特定类别相关的产品属性?