• vuejs


    过滤器的使用

    通过管道符,只能所用在插值表达式和v-bind

        <div id="app">
            <p>{{ msg | msgFormat('疯狂')|test }}</p>
        </div>
    
        <script>
    
            // vue中注意filter的定义顺序,必Vue实例实例化之前
            Vue.filter('msgFormat', function (msg,arg) {
                return msg.replace(/单纯/g, arg)
            })
            Vue.filter('test',function(msg){
                return msg+'--------------'
            })
    
            var vm = new Vue({
                el: '#app',
                data: {
                    msg: '曾经,我也是个单纯的少年,单纯的我,傻傻的问,谁是世界上最单纯的男人'
                },
                methods: {
    
                },
            })
        </script>

    私有过滤器的使用

            var vm = new Vue({
                el: '#app2',
                date: {
    
                },
                methods: {
    
                },
                filters: {
                    dateFormat: function (datestr, pattern='') {
                        var dt = new Date(datestr)
    
                        var y = dt.getFullYear()
                        var m = (dt.getMonth() + 1).toString().padStart(2,'0')
                        var d = dt.getDate().toString().padStart(2,'0')
    
                        // return y+'-'+m+'-'+d
    
    
                        if (pattern && pattern.toLowerCase() === 'yyyy-mm-dd') {
                            return `${y}-${m}-${d}`
                        } else {
                            var hh = dt.getHours().toString().padStart(2,'0')
                            var mm = dt.getMinutes().toString().padStart(2,'0')
                            var ss = dt.getSeconds().toString().padStart(2,'0')
                            return `${y}-${m}-${d} ${hh}:${mm}:${ss}---`
                        }
                    },
                }
            })
    注意:全局过滤器和私有过滤器名字重复的时候,采用就近原则:私有过滤器优先

    按键修饰符

    <input type="text" class="form-control" v-model="id" @keyup.enter="add">

    给文本框添加的按键修饰符,在使用enter键的时候就会自己调用add函数添加

    除此之外还提供下面的按键修饰符:

    .enter

    .tab

    .delete

    .esc

    .space

    .up

    .down

    .left

    .right

    可以自己定义,查找文档,js中的键盘码的值

    <input type="text" class="form-control" v-model="id" @keyup.f2="add">

    自定义一个全局的键盘过滤器

    Vue.config.keyCodes.f2=113

    其中113是js中F2的键盘码


    自定义指令获得全局的焦点

            // 1.使用Vue.directive()定义自定义的指令
            // 2.第一个参数是指令的名称,不需要加上V-但是在使用的时候必须加上
            // 3.参数2,是一个对象,有一些指令的函数,在相关的阶段执行相关的操
    注意函数中第一个元素必须是el,踏实一个js对象
            Vue.directive('focus',{
                
                bind: function(el){  //绑定的时候只是加载到内存中,所以这时候调用focus方法不会再页面显示
                    el.focus()
                },
    
                inserted: function(el){//这是从内存中插入到页面所以这种可以看到页面上获得焦点
                    el.focus()
                }
            })

    调用

    <input type="text" class="form-control" v-model="keywords" v-focus>

    设置搜索文字的颜色

            Vue.directive('color',{//注意这种情况,样式在加载进内存大的时候就会存在,所以插入到页面中就会显示
                bind: function(el){
                    el.style.color='red'
                },
                
            })
    <input type="text" class="form-control" v-model="keywords" v-focus v-color>

    和行为相关的使用inserted,防止js行为失效,和样式相关的一般可以在bind执行

    其中含有的函数

    bind:指令只会在第一次绑定的时候调用

    inserted:被绑定元素插入父节点的时候调用

    update:所在组件的VNode更新的时候发生调用,可能发生在孩子之前

    componentUpdated:所在组件的VNode及其孩子的VNode全部更新的时候调用

    unbind:解绑的时候只调用一次

    或者使用钩子函数

    钩子函数

            Vue.directive('color',{//注意这种情况,样式在加载进内存大的时候就会存在,所以插入到页面中就会显示
                bind: function(el,binding){
                    el.style.color=binding.value  //第二个参数binding中含有很多钩子方法,使用钩子方法获得相关的参数
                },
                
            })
    <input type="text" class="form-control" v-model="keywords" v-focus v-color="'blue'">

    私有的自定义的指令,两种形式,其中第二种的简写形式就相当于在bind和inserted中写

                directives: {
                    'fontweight':{
                        bind: function(el,binding){
                            el.style.fontWeight=binding.value
                        }
                    },
                    
                    'fontsize': function(el,binding){
                        el.style.fontSize=parseInt(binding.value)+'px'
                    }
                }
    <h3 v-fontweight="900" v-fontsize="60">{{new Date()|dateFormat}}</h3>

    vue-resource发送get,post,jsonp

    手动发起的post没有表单格式,有的服务器处理不了,需要加上下面的黄色部分

                methods: {
                    getInfo() {
                        this.$http.get('http://localhost:8080/code/05.html').then(function (result) {
                            console.log(result)
                            console.log(result.body)
                        })
                    },
    
                    postInfo() {
                        this.$http.post('http://vue.studyit.io/api/post', {}, {
                            emulateJSON: true
                        }).then(function (result) {
                            console.log(result.body)
                        })
                    },
                    jsonpInfo(){
                        this.$http.jsonp('http://vue.studyit.io/api/jsonp').then(result=>{
                            console.log(result.body)
                        })
                    }
                },

    jsonp原理

    script中请求服务器,URL中带上本地方法,服务器返回函数的调用,但是这时候会加上从服务器传回来的参数

    vue中设置每次ajax请求的根路径

    Vue.http.options.root='http://vue.studyit.io/'

    使用的时候后面的路径写相对路径,不能有斜线,否则不会启用根路径作为拼接

    this.$http.get('api/delproduct/'+id).then(result=>{

    vue中设置post的全局配置参数

    Vue.http.options.emulateJSON=true

    使用post的ajax请求的时候

    this.$http.post('api/addproduct',{name:this.name}).then(result=>{
  • 相关阅读:
    【转】最大子序列和(动态规划学习)
    [转]修改Oracle XDB的8080端口
    【转】 C++常见编译/链接错误及其解决办法
    Pentaho Dashboard Editor使用向导
    [转]什么是Unicode是什么是UTF8是什么
    【转】 typedef的四个用途和两个陷阱
    【转】 C++中类型转换的解释
    从一道笔试题谈算法优化
    [转]谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
    [转]对Oracle数据库的字符集问题的资料收集,受益匪浅
  • 原文地址:https://www.cnblogs.com/feixiangdecainiao/p/10828486.html
Copyright © 2020-2023  润新知