最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 02-vue常用特性

    正文概述 掘金(Sakuhii)   2021-02-14   396

    一、表单操作

    • number 转化为数值

    • trim 去掉开始和结尾的空格

    • lazy 将input事件(直接验证)转化为change事件(失去焦点才验证)

    v-model.number

    v-model.trim

    v-model.lazy

    二、自定义指令 directive

    cn.vuejs.org/v2/guide/cu…

    1. 获取焦点

        Vue.directive('focus', {  
          /* focus自定义名字 v-balabala 
            directive 固定
            inserted 固定*/
          inserted: function(el) {
            // el:指令所绑定的元素
            el.focus(); // 直接默认就定位到输入框
          }
        });
    
    <input type="text" v-focus>
    

    // 带参数指令

      <div id="app">
        <input type="text" v-color='msg'>
      </div>
      <script type="text/javascript" src="js/vue.js"></script>
      <script type="text/javascript">
    
        Vue.directive('color', { 
          bind: function(el, binding){  // binding形参 可以改名
            // 根据指令参数设定背景色
            // console.log(binding.value); // hi
            el.style.backgroundColor = binding.value.color;
          }
        });
        var vm = new Vue({
          el: '#app',
          data: {
            msg: {
              color: 'red'
            }
          },
          methods: {
          }
        });
      </script>
    

    // 局部指令

    组件中接收directives选项

          directives: {
          color: {
            bind: function(el, binding){
                el.style.backgroundColor = binding.value.color;
            }
          }
    

    三、计算属性 computed

    // computed

      <div id="app">
        <div>{{msg}}</div>
        <div>{{reverseString}}</div>
      </div>
      <script type="text/javascript" src="js/vue.js"></script>
      <script type="text/javascript">
        var vm = new Vue({
          el: '#app',
          data: {
            msg: 'hello'
          },
          computed: {
            reverseString: function(){
              return this.msg.split('').reverse().join('');
            }
          }
        });
    

    计算和方法 区别:是否缓存 同样的内容控制台只输出一次

    四、侦听器 watch

    数据变化较大时执行异步或开销较大

      <div id="app">
        <div>
          <span>名:</span>
          <span>
            <input type="text" v-model='firstName'>
          </span>
        </div>
        <div>
          <span>姓:</span>
          <span>
            <input type="text" v-model='lastName'>
          </span>
        </div>
        <div>{{fullName}}</div>
      </div>
      <script type="text/javascript" src="js/vue.js"></script>
      <script type="text/javascript">
        /*
          侦听器
        */
        var vm = new Vue({
          el: '#app',
          data: {
            firstName: 'Jim',
            lastName: 'Green',
            // fullName: 'Jim Green'
          },
          computed: { // 计算属性
            fullName: function() {
              return this.firstName + ' ' + this.lastName;
            }
          },
          watch: {  //侦听器
            // firstName: function(val) {    // firstName:第一个属性名的名字
            //   this.fullName = val + ' ' + this.lastName;
            // },
            // lastName: function(val) {    // lastName:第一个属性名的名字
            //   this.fullName = this.firstName + ' ' + val;
            // }
    
          }
        });
      </script>
    

    五、过滤器 filter

      <div id="app">
        <input type="text" v-model='msg'>
        <div>{{msg | upper}}</div>
      </div>
      <script type="text/javascript" src="js/vue.js"></script>
      <script type="text/javascript">
        Vue.filter('upper', function(val) {
          return val.charAt(0).toUpperCase() + val.slice(1)
          // charAt(0) 选中第一个字符 toUpperCase 变成大写 slice(1) 从第二个字符开始到最后
        })
        var vm = new Vue({
          el: '#app',
          data: {
            msg: ''
          }
        })
    
    <div>{{msg | upper}}</div>
    <div>{{msg | upper | lower }}</div>
    <div v-bind:id = "id | format"></div>
        <div :abc = "msg | upper">123</div> <!-- abc自定义 -- >
    

    另一种单独提出来

        var vm = new Vue({
          el: '#app',
          data: {
            msg: ''
          },
          filters: {
            upper: function(val) {
              return val.charAt(0).toUpperCase() + val.slice(1);
            }
          }
        })
    

    带参数

    <!-- 简版 -->    
    
    	<div id="app">
            <div>{{date | format('yyyy-MM-dd')}}</div>
        </div>
        <script type="text/javascript" src="js/vue.js"></script>
        <script type="text/javascript">
        Vue.filter('format',  function(value, arg) {
            // console.log(arg);
            // return value;
            if(arg == 'yyyy-MM-dd'){
                var ret = '';
                ret += value.getFullYear() + '-' + value.getMonth() + '-' +value.getDate();
                return ret;
            }
        })
        var vm = new Vue({
            el: '#app',
            data: {
                date: new Date()
            }
        });
        </script>
    

    六、生命周期

    1. 挂载(初始化相关属性

      • beforeCreate 在实例初始化之后,数据观测和事件配置之前被调用。
      • created 在实例创建完成后被立即调用。
      • beforeMount 在挂载开始之前被调用。
      • mounted el被新创建的vm.$el替换,并挂载到实例上去之后调用该钩子。
    2. 更新(元素或组件

      • beforeUpdate 数据更新时调用,发生在虚拟DOM打补丁之前。
      • updated 由于数据更改导致的虚拟DOM重新渲染和打补丁,在这之后会调用该钩子。
    3. 销毁(销毁相关属性,释放一些资源

      • beforeDestroy 实例销毁之前调用。
      • destroyed 实例销毁后调用。

    02-vue常用特性

    七、数组相关api

    变异方法(修改原有数据)

    • push() 把指定的值添加到数组

    • pop() 删除 arrayObject 的最后一个元素,把数组长度减 1,返回它删除的元素的值

    • shift() 把数组的第一个元素从其中删除,并返回第一个元素的值

      <script type="text/javascript">
        
      var arr = new Array(3)
      arr[0] = "George"
      arr[1] = "John"
      arr[2] = "Thomas"
        
      document.write(arr + "<br />")
      document.write(arr.shift() + "<br />")
      document.write(arr)
        
      </script>
      

      输出:

      George,John,Thomas
      George
      John,Thomas
      
    • unshift() 把它的参数插入 arrayObject 的头部

    • splice() 删除数组中指定元素 返回的是含有被删除的元素的数组

    • sort()排序 按字母顺序对数组中的元素进行排序

    • reverse() 反转

    替换数组(生成新的数组) => 新建一个数组接收一下

    • filter() 通过检查指定数组中符合条件的所有元素

    • concat() 该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成

    • slice() 返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

      start必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
      end可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

    响应式变化

    Vue.set(vm.items, indexOfItem, newValue)
    
    vm.$set(vm.items, indexOfItem, newValue)
    /* Vue.set(vm.list, 2, lemon)	这就是真真的第二个 不从0开始数哈*/
    /* Vue.set(vm.info, 'gender', 'female')	这就是真真的第二个 不从0开始数哈*/
    

    参数一vm.item 表示要处理的数组名称

    参数二indexOfItem 表示要处理的数组的索引

    参数三newValue 表示要处理的数组的


    起源地下载网 » 02-vue常用特性

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元