vue基础学习(1.6):vue的过滤器、指令、插件

news/2024/7/10 0:52:27 标签: vue

1. 过滤器

  1. 说明:
    1. 过滤器功能:对要显示的数据进行特定的格式化后再显示;
    2. 使用过滤器没有改变原来的数据,只是产生新的对应的数据
    3. 自定义过滤器,注意要写在new Vue({})之前;
    4. Vue.filter(“指定过滤器的名字”,处理函数function(value1,value2))其中处理函数中,value1是传入的要过滤的数据,即原数据;value2开始后面的参数是html调用过滤器的时候传入的参数;
    5. html页面使用过滤器传入变量时,采用管道" | "的方式,即:{{date | dateFilter}};
    6. js语法说明:javascript中以下值会被转换为false:false,undefined,null,0,-0,NaN,"",’’
    7. 注意引入 moment-with-locales.min.js
  2. 代码示例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>11_过滤器</title>
</head>
<body>
<div id="myTest">
    时间: {{date}}
    <br/>
    格式化之后: {{date | dateFilter}}
    <br/>
    带有入参格式化之后1:{{date | dateFilter("YYYY-MM-DD")}}
    <br/>
    带有入参格式化之后2: {{date | dateFilter("HH:mm:ss")}}
</div>
<script type="text/javascript" src="../js/vue.js"></script>
<script type="text/javascript" src="../js/moment-with-locales.min.js"></script>
<script type="text/javascript">
    //自定义过滤器,注意要写在new Vue({})之前
    //Vue.filter("指定过滤器的名字",处理函数function(value1,value2))
    //其中处理函数中,value1是传入的要过滤的数据,即原数据;value2开始后面的参数是html调用过滤器的时候传入的参数
    Vue.filter("dateFilter", function (value, format) {
        //布尔值:javascript中以下值会被转换为false:false,undefined,null,0,-0,NaN,"",''
        console.log(!undefined);  //true
        console.log(!null);     //true
        //在js中  这里的语法说明:如果format不等于undefined和null,则format=format;否则,format="YYYY-MM-DD HH:mm:ss"
        format = format || "YYYY-MM-DD HH:mm:ss";
        return moment(value).format(format);
    });
    new Vue({
        el: '#myTest',
        data: {
            date: new Date()
        }
    });
</script>
</body>
</html>
  1. 运行结果
    在这里插入图片描述

2. 指令

  1. 包括:内置指令和自定义指令
  2. 常用的内置指令:
    (1). v-text:更新元素的textContent;
    (2). v-html:更新元素的innerHtml;
    (3). v-if: 如果为true,当前标签才会输出到页面;(优先级低于v-for)
    (4). v-else: 如果为false,当前标签才会输出到页面;
    (5). v-show: 通过display样式来控制显示或隐藏;
    (6). v-for: 遍历数组/对象;
    a. 获取数组下标:v-for="(item,index) in items"
    b. 遍历对象:v-for="(value,key,index) in object"
    (7). v-on: 绑定事件监听,一般简写为:@;
    (8). v-bind: 强制绑定解析表达式,可以省略v-bind,用冒号" : ";
    (9). v-model: 双向数据绑定;
    (10). ref: 指定唯一标识,vue对象通过$refs属性访问这个元素对象;
    (11). v-cloak: 防止闪现,配合css实现:[v-cloak]{display: none};
  3. 自定义指令
    (1). 自定义指令又分为:全局指令和局部指令
    (2). 注册全局指令:
    Vue.directive('my-directive',function(el,binding){ el.innerHTML=binding.value.toupperCase() })
    
    (3). 注册局部指令:
    在new Vue({})里面定义,与el、data、methods平级。
     directives: {
            //注册局部指令
            "lower-text"(el, binding) {
                el.textContent = binding.value.toLowerCase();
            }
        }
    
  4. 代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>11_指令</title>
    <style type="text/css">
        /*[]为属性选择器,通过v-cloak防止闪屏*/
        [v-cloak] {
            display: none;
        }
    </style>
</head>
<body>
<div id="myTest">
    <p ref="content">ref测试</p>
    <p v-html="msg"></p>
    <button @click="hint()">弹出</button>
    <p v-cloak>{{msg}}</p>
</div>

<div id="myTest1">
    <p v-upper-text="msg1"></p>
    <p v-lower-text="msg1"></p>
</div>

<div id="myTest2">
    <p v-upper-text="msg1"></p>
    <p v-lower-text="msg1"></p>
</div>
<script type="text/javascript" src="../js/vue.js"></script>
<script type="text/javascript" src="../js/moment-with-locales.min.js"></script>
<script type="text/javascript">
    new Vue({
        el: "#myTest",
        data: {
            msg: "I Love You!"
        },
        methods: {
            hint() {
                alert(this.$refs.content.textContent);
            }
        }
    });
    /*-----------------------------------------------------*/
    //定义全局指令 Vue.directive(指令名,处理方法)
    //处理方法:el==>指令属性所在的标签对象; binding==>包含指令相关信息数据的对象
    Vue.directive("upper-text", function (el, binding) {
        console.log(el, binding);
        el.textContent = binding.value.toUpperCase();
    });
    new Vue({
        el: "#myTest1",
        data: {
            msg1: "Dou You Love Me ? "
        },
        directives: {
            //注册局部指令
            "lower-text"(el, binding) {
                el.textContent = binding.value.toLowerCase();
            }
        }
    });

    new Vue({
        el: "#myTest2",
        data: {
            msg1: "Dou You Love Me ? "
        }
    })

</script>
</body>
</html>
  1. 运行结果
    在这里插入图片描述

3. 插件

Vue 插件是一个包含 install 方法的对象,通过 install 方法给 Vue 或 Vue 实例添加方法, 定义全局指令等。

  1. 首先定义要封装的插件的js文件(myPlugin.js)
/*vue插件库 myPlugin.js*/
(function () {
    //声明插件
    const MyPlugin = {};
    //插件对象必须有一个install方法
    MyPlugin.install = function (Vue, options) {
        // 1. 添加全局方法或属性
        Vue.myGlobalMethod = function () {
            console.log("这是vue的全局方法。。。。。。")
        }

        // 2. 添加全局资源,指令
        Vue.directive('my-directive', function (el, binding) {
            el.textContent = binding.value.toUpperCase();
        })

        // 4. 添加实例方法
        Vue.prototype.$myMethod = function (methodOptions) {
            console.log("这里是实例方法。。。。。。")
        }
    }
    //向外暴露
    window.MyPlugin = MyPlugin;
})();
  1. 使用封装的插件(myTest.html)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>11_插件</title>
</head>
<body>
<div id="myTest">
    <p v-my-directive="msg"></p>
</div>

<script type="text/javascript" src="../js/vue.js"></script>
<script type="text/javascript" src="./myPlugin.js"></script>
<script type="text/javascript">
    //声明使用插件
    Vue.use(MyPlugin); //内部调用 MyPlugin.install(Vue)
    //调用全局方法
    Vue.myGlobalMethod();
    var vm = new Vue({
        el: "#myTest",
        data: {
            msg: "插件指令test  I Love You !",
        }
    });
    //调用实例方法
    vm.$myMethod();
</script>
</body>
</html>
  1. 运行结果
    在这里插入图片描述

http://www.niftyadmin.cn/n/1179388.html

相关文章

瞧,这就是UE4 C++

1.虚幻中的类前缀你会见到U&#xff0c;A&#xff0c;F&#xff0c;以下就是很好的罗列其中的意义 U: UObject继承过来的&#xff0c;例如UTexture A: AActor继承过来的&#xff0c;例如AGameMode F: 其他的类和结构&#xff0c;例如FName, FVector T&#xff1a;模板&am…

第三方支付接口搜集(附下载)

http://www.cnblogs.com/JemBai/archive/2009/01/13/1374910.html 刚整理的几个接口文档记录 支付接口搜集 08年1月 第三方支付接口 1. 快钱支付 2. 支付宝 3. YeePay易宝 4. 邮局支付&#xff08;网汇通&#xff09; 5. 安付通 6. 网银(c…

vue基础学习(1.7):vue的生命周期

1. vue生命周期图示 2. vue生命周期分析 初始化显示 (1). beforeCreate(); 数据模型data还未加载 (2). created(); 数据模型data和方法methods已经加载&#xff0c;但是html模板没有加载渲染 (3). beforeMount(); 此时html模板未渲染 (4). mounted(); 此时html模板已渲染 更新…

ASP.NET 文件后缀名详解

sln&#xff1a;解决方案文件&#xff0c;为解决方案资源管理器提供显示管理文件的图形接口所需的信息。 .csproj:项目文件&#xff0c;创建应用程序所需的引用、数据连接、文件夹和文件的信息。 .aspx&#xff1a;Web 窗体页由两部分组成&#xff1a;视觉元素&#xff08;HTML…

zz: C++后台服务程序开发模式

2019独角兽企业重金招聘Python工程师标准>>> 一直感觉 VC 太复杂了&#xff0c;但昨天看了汪蒲阳编著的因特网应用编程&#xff0c;其中写到后台服务程序的编写&#xff0c;论述的非常详细&#xff0c;而且逻辑清晰&#xff0c;看了之后感觉明白不少&#xff0c;故拿…

vue组件化编码(2.1): 使用vue-cli脚手架创建第一个项目

1. 创建第一个vue-cli项目 依次执行如下命令&#xff1a; npm install -g vue-clivue init webpack vue_democd vue_demonpm installnpm run dev 最后访问&#xff1a;http://localhost:8080/ 可以看到运行结果。 2. 项目目录 执行完上述命令后&#xff0c;项目目录结构如下…

zabbix1.8.8安装配置

前面的内容中&#xff0c;我们提到过nagios的配置&#xff0e;这里我们再次研究zabbix当我们配置好的我的环境后&#xff0e;我们开始安装&#xff0e;在安装的时候&#xff0e;请注意&#xff0c;一定要选择好数据的类型&#xff0c;不然会出现问题的&#xff0e; &#xff11…

Spring中在多线程中注入bean总是为null的问题解决

详见博文&#xff1a;https://blog.csdn.net/bebmwnz/article/details/90645472