vue内置指令和自定义指令

常见的指令:
                        v-bind    : 单向绑定解析表达式, 可简写为 :xxx
                        v-model    : 双向数据绑定
                        v-for      : 遍历数组/对象/字符串
                        v-on       : 绑定事件监听, 可简写为@

                        通常和@click=“”一起用
                        v-if          : 条件渲染(动态控制节点是否存存在)
                        v-else     : 条件渲染(动态控制节点是否存存在)
                        v-show     : 条件渲染 (动态控制节点是否展示)
v-text指令:
                        1.作用:向其所在的节点中渲染文本内容,当做字符串解析。
                        2.与插值语法的区别:v-text会替换掉节点中的内容,{{xx}}则不会。

v-html指令:
                        1.作用:向指定节点中渲染包含html结构的内容。
                        2.与插值语法的区别:
                                    (1).v-html会替换掉节点中所有的内容,{{xx}}则不会。
                                    (2).v-html可以识别html结构。
                        3.严重注意:v-html有安全性问题!!!!
                                    (1).在网站上动态渲染任意HTML是非常危险的,容易导致XSS攻击。
                                    (2).一定要在可信的内容上使用v-html,永不要用在用户提交的内容上!

v-cloak指令(没有值,就是没有等于号):
                        1.本质是一个特殊属性,Vue实例创建完毕并接管容器后,会删掉v-cloak属性。
                        2.使用css配合v-cloak可以解决网速慢时页面展示出{{xxx}}的问题。

如果不加v-cloak,那么页面进入后,就会出现{{name}},
没有解析,等五秒后服务器响应才能够解析出来
加上v-cloak,刚开始vue实例未接管容器,那么v-cloak就不会删除,
配合css样式,页面有标签,但是不显示
,当vue接管容器之后,v-cloak就被删除了,那么display:none;就失效了,
这样可以保证在网速过慢的时候,页面不是出现一大堆没有解析的标签

<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><title>v-cloak指令</title><style>[v-cloak] {display: none;}</style>
</head><body><div id="root"><h2 v-cloak>{{name}}</h2></div><!-- 下面这行代码的意思是服务器晚三秒再响应,用于模拟网速过慢的情况 --><script type="text/javascript" src="http://lo calhost:8080/resource/5s/vue.js"></script>
</body><script type="text/javascript">console.log(1)Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。new Vue({el: '#root',data: {name: '尚硅谷'}})
</script></html>

 v-once指令:
                        1.v-once所在节点在初次动态渲染后,就视为静态内容了。
                        2.以后数据的改变不会引起v-once所在结构的更新,可以用于优化性能。 

设置了这个属性之后,n值就是初始状态渲染到页面上,后面再怎么变也不会变他
<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><title>v-once指令</title><!-- 引入Vue --><script type="text/javascript" src="../js/vue.js"></script></head><body><!-- 准备好一个容器--><div id="root"><h2 v-once>初始化的n值是:{{n}}</h2><h2>当前的n值是:{{n}}</h2><button @click="n++">点我n+1</button></div></body><script type="text/javascript">Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。new Vue({el:'#root',data:{n:1}})</script>
</html>

v-pre指令:
                    1.跳过其所在节点的编译过程。
                    2.可利用它跳过:没有使用指令语法、没有使用插值语法的节点,会加快编译。

<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><title>v-pre指令</title><!-- 引入Vue --><script type="text/javascript" src="../js/vue.js"></script></head><body><!-- 准备好一个容器--><div id="root"><h2 v-pre>Vue其实很简单</h2><h2 >当前的n值是:{{n}}</h2><button @click="n++">点我n+1</button></div></body><script type="text/javascript">Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。new Vue({el:'#root',data:{n:1}})</script>
</html>

自定义指令总结:

所有指令里面相关的this都是window

            一、定义语法:

                  (1).局部指令:

                        new Vue({                                       |               new Vue({

                          directives:{指令名:配置对象}        | 或                           directives{指令名:回调函数}

                        })                                                     |                       })

                  (2).全局指令:

                          Vue.directive(指令名,配置对象) 或   Vue.directive(指令名,回调函数)

            二、配置对象中常用的3个回调:到达某一个情形会自动调用,下面就是到达哪种情形会被调用

                  (1).bind:指令与元素成功绑定时调用。

                  (2).inserted:指令所在元素被插入页面时调用。

                  (3).update:指令所在模板结构被重新解析时调用。

            三、备注:

                  1.指令定义时不加v-,但使用时要加v-;

                  2.指令名如果是多个单词,要使用kebab-case命名方式,不要用camelCase命名。

                  3.局部自定义属性只能给所指定的vm使用,要想其他vm都可以用,需要设置为全局属性 

                   4.自定义属性就相当于拥有自定义对象属性的bind、update,而没有inserted

                  5.自定义的属性不靠返回值,考函数所传入的参数,有两个参数,第一个参数指的是标签,第二个参数是标签的信息,如下:

结果:

<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><title>自定义指令</title><script type="text/javascript" src="../js/vue.js"></script></head><body><!-- 准备好一个容器--><div id="root"><h2>{{name}}</h2><h2>当前的n值是:<span v-text="n"></span> </h2><!-- <h2>放大10倍后的n值是:<span v-big-number="n"></span> </h2> --><h2>放大10倍后的n值是:<span v-big="n"></span> </h2><button @click="n++">点我n+1</button><hr/><input type="text" v-fbind:value="n"></div></body><script type="text/javascript">Vue.config.productionTip = false//定义全局指令/* Vue.directive('fbind',{//指令与元素成功绑定时(一上来)bind(element,binding){element.value = binding.value},//指令所在元素被插入页面时inserted(element,binding){element.focus()},//指令所在的模板被重新解析时update(element,binding){element.value = binding.value}}) */new Vue({el:'#root',data:{name:'尚硅谷',n:1},directives:{//big函数何时会被调用?1.指令与元素成功绑定时(一上来)。2.指令所在的模板被重新解析时。也就是说其所在的模版,只要有其中的数据发生更新时,那么就调用/* 'big-number'(element,binding){// console.log('big')element.innerText = binding.value * 10}, */big(element,binding){console.log('big',this) //注意此处的this是window// console.log('big')element.innerText = binding.value * 10},fbind:{//指令与元素成功绑定时(一上来)bind(element,binding){element.value = binding.value},//指令所在元素被插入页面时inserted(element,binding){element.focus()},//指令所在的模板被重新解析时update(element,binding){element.value = binding.value}}}})</script>
</html>


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/60814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis linux 安装

下载解压 https://download.redis.io/releases/ tar -zvxf ----redis-7.4.1编译 进入目录下 # redis 依赖c yum install gcc-cmake可能会有问题&#xff0c;所以记得换源# 安装到 /usr/local/redis make PREFIX/usr/local/redis installcd src ./redis-serverredis.confi…

使用ACF插件向WooCommerce商城产品添加自定义字段

WooCommerce网站的一个常见请求是需要在单个产品页面上包含额外的字段输入&#xff0c;并在前端输出它们。我将解释如何使用出色的ACF高级自定义字段插件&#xff08;免费版&#xff09;来实现这一点。 需要编写一些代码&#xff0c;但不用担心&#xff0c;一切都非常简单。此…

3.task1 suimove helloword 上链

1.创建项目 sui move new hello_world 2.代码部分 module hello_move::hello {use std::ascii::{String, string};use sui::object::{Self,UID};use sui::transfer::transfer;use sui::tx_context::{TxContext, sender};public struct Hello has key{id:UID,say: String}fun …

CSS回顾-基础知识详解

一、引言 在前端开发领域&#xff0c;CSS 曾是构建网页视觉效果的关键&#xff0c;与 HTML、JavaScript 一起打造精彩的网络世界。但随着组件库的大量涌现&#xff0c;我们亲手书写 CSS 样式的情况越来越少&#xff0c;CSS 基础知识也逐渐被我们遗忘。 现在&#xff0c;这种遗…

从0开始机器学习--Day27--主成分分析方法

主成分分析方法(Principal components analysis) 在降维算法中&#xff0c;比较普遍的是使用主成分分析方法&#xff08;PCA&#xff09; PCA算法简单示例 如图&#xff0c;假设我们有一个二维的特征&#xff0c;想要将其降为一维&#xff0c;简单的方法是寻找一条直线&#…

电子工牌独立双通道定向拾音方案(有视频演示)

现在一些行业的客服人员在面对客户都要求使用电子工牌分别记录客服和顾客的声音,我们利用双麦克风阵列双波束拾音的方案设计了一个电子工牌方案.可以有效分别记录客服和顾客的声音. 方案思路: 我们采用了一个双麦阵列波束拾音的模块A-59,此模块可以利用2个麦克风组成阵列进行双…

Qt Quazip压缩解压实例

qt 中Quazip封装了zip压缩解压操作类&#xff0c;windows编译出dll,lib 最简单的使用示例如下&#xff1a;

小程序19-微信小程序的样式和组件介绍

在小程序中不能使用 HTML 标签&#xff0c;也就没有 DOM 和 BOM&#xff0c;CSS 也仅支持部分选择器 小程序提供了 WXML 进行页面结构的编写&#xff0c;WXSS 进行页面的样式编写 WXML 提供了 view、text、image、navigator等标签构建页面结构&#xff0c;小程序中标签称为组件…

HCIP-HarmonyOS Application Developer 习题(二十二)

1、用户将手机导航迁移至智能手表之后&#xff0c;智能手表如果需要获取手机传过来的数据&#xff0c;从下列哪个方法中获取? A、onCompleteContinuation() B、onStartContinuation() C、onRestoreData() D、onSaveData() 答案&#xff1a;C 分析&#xff1a;FA发起迁移后&am…

动态规划-背包问题——[模版]完全背包问题

1.题目解析 题目来源 [模版]完全背包_牛客题霸_牛客 测试用例 2.算法原理 1.状态表示 与01背包相同&#xff0c;这里的完全背包也是需要一个二维dp表来表示最大价值&#xff0c;具体如下 求最大价值dp[i][j]:在[1,i]区间选择物品&#xff0c;此时总体积不大于j时的最大价值 求…

高效分支管理规范

一、目的 通过标准化的流程和最佳实践&#xff0c;确保代码组织清晰、版本控制高效、变更管理有序&#xff0c;从而提高软件开发的质量、效率和可维护性&#xff0c;支持团队协作和持续集成/持续部署流程&#xff0c;最终实现项目的长期成功和发展 二、分支命名规范 简洁明了…

前后端分离练习(云客项目)

这几天学习了一点前端的开发&#xff0c;后面通过这个小项目来整理开发的过程&#xff0c;参考的是动力节点的动力云客这个项目&#xff0c;大家有兴趣可以去看一下视频&#xff0c;我更多的是学习了它的前端开发&#xff0c;后端我是用自己的方式来的&#xff0c;那么开始今天…

linux001.在Oracle VM VirtualBox中ubuntu虚拟系统扩容

1.打开终端切换到virtualBox安装目录 2.输入命令扩容 如上终端中的代码解释&#xff1a; D:\Program Files\Oracle\VirtualBox>.\VBoxManage modifyhd D:\ubuntu18.04\Ubuntu18.04\Ubuntu18.04.vdi --resize 40960如上代码说明&#xff1a;D:\Program Files\Oracle\Virtual…

小版本大不同 | Navicat 17 新增 TiDB 功能

近日&#xff0c;Navicat 17 迎来了小版本更新。此次版本新增了对 PingCap 公司的 TiDB 开源分布式关系型数据库的支持&#xff0c;进一步拓展了 Navicat 的兼容边界。即日起&#xff0c;Navicat 17 所有用户可免费升级至最新版本&#xff0c;通过 Navicat 工具实现 TiDB 数据库…

Flutter:key的作用原理(LocalKey ,GlobalKey)

第一段代码实现的内容&#xff1a;创建了3个块&#xff0c;随机3个颜色&#xff0c;每次点击按钮时&#xff0c;把第一个块删除 import dart:math; import package:flutter/material.dart; import package:flutter_one/demo.dart;void main() {runApp(const App()); }class App…

10款PDF翻译工具的探索之旅:我的使用经历与工具特色!!

在如今的时代&#xff0c;PDF文件已经成为我们工作、学习和生活中不可或缺的一部分。但是&#xff0c;当遇到一些非母语或陌生语言的PDF文档时&#xff0c;这要怎么办呀&#xff01;这时候翻译工具就显得尤为重要了。这也是我所遇到过的难题&#xff0c;现在我将与大家分享几款…

L11.【LeetCode笔记】有效的括号

目录 1.题目 2.分析 理解题意 解决方法 草稿代码 ​编辑 逐一排错 1.当字符串为"["时,分析代码 2.当字符串为"()]"时,分析代码 正确代码(isValid函数部分) 提交结果 3.代码优化 1.题目 https://leetcode.cn/problems/valid-parentheses/descri…

创建vue插件,发布npm

开发步骤&#xff1a;1.创建一个vue项目&#xff0c;2.开发一个组件。 3.注册成插件。 4.vite和package.json配置。5.发布到npm &#xff11;.创建一个vue项目 npm create vuelatest 生成了vue项目之后&#xff0c;得到了以下结构。 在src下创建个plugins目录。用于存放开发的…

Android OpenGL ES详解——实例化

目录 一、实例化 1、背景 2、概念 实例化、实例数量 gl_InstanceID 应用举例 二、实例化数组 1、概念 2、应用举例 三、应用举例——小行星带 1、不使用实例化 2、使用实例化 四、总结 一、实例化 1、背景 假如你有一个有许多模型的场景&#xff0c;而这些模型的…

MyBatis-Plus的IPage分页total不正确问题

场景&#xff1a; 执行了一条连接查询的sql语句&#xff0c;进行分页后&#xff0c;total不正确问题。如下图&#xff1a; 分析&#xff1a; 分页部分代码如下&#xff1a; String sql searchSqlBuilderInstance.generateSql(); Page page new Page(commonSearchDTO.getPage…