Vue2.0的变化 ,组件模板,生命周期,循环,自定义键盘指令,过滤器

组件模板:

    之前:

      <template>

        <h3>我是组件</h3><strong>我是加粗标签</strong>

      </template>

    现在:  必须有根元素,包裹住所有的代码  

    例如:       

      <script>

          var Home={

            template:'#aaa'

        };

        window.onload=function(){

           new Vue({

               el:'#box',

              data:{

                msg:'welcome vue2.0'

              },

            components:{

                 'aaa':Home

             }

           });

         };

       </script>    

       <body>

        <template id="aaa">

        <div>

        <h3>我是组件</h3>

        <strong>我是加粗标签</strong>

        </div>

         </template>

        <div id="box">

        <my-aaa></my-aaa>

         {{msg}}

          </div>

      </body>

生命周期:  

      之前:

        init

        created

        beforeCompile

        compiled

        ready √ ->     mounted

        beforeDestroy

        Destroyed

      现在:

        beforeCreate 组件实例刚刚被创建,属性都没有

        created 实例已经创建完成,属性已经绑定

        beforeMount 模板编译之前

        mounted 模板编译之后,代替之前ready  *

        beforeUpdate 组件更新之前

        updated 组件更新完毕 *

        beforeDestroy 组件销毁前

        destroyed 组件销

例如:

      new Vue({

      el:'#box',

      data:{

       msg:'welcome vue2.0'

       },

       methods:{

        update(){

        this.msg='大家好';

       },

    destroy(){

       this.$destroy();

      }

    },

   beforeCreate(){

    console.log('组件实例刚刚被创建');

     },

  created(){

    console.log('实例已经创建完成');

     },

   beforeMount(){

    console.log('模板编译之前');

    },

  mounted(){

    console.log('模板编译完成');

     },

   beforeUpdate(){

  console.log('组件更新之前');

  },

  updated(){

  console.log('组件更新完毕');

    },

  beforeDestroy(){

  console.log('组件销毁之前');

    },

  destroyed(){

  console.log('组件销毁之后');

   }

   });

    <div id="box">

    <input type="button" value="更新数据" @click="update">

   <input type="button" value="销毁组件" @click="destroy">

   {{msg}}

  </div>

循环:

    2.0里面默认就可以添加重复数据

      去掉了隐式一些变量

      $index $key

    之前:

      v-for="(index,val) in array"

    现在:

      v-for="(val,index) in array"

      track-by="id"

    变成

      <li v-for="(val,index) in list" :key="index">

    例如:

      <script>

      window.onload=function(){

        new Vue({

           el:'#box',

           data:{

          list:['width','height','border']

          },

           methods:{

           add(){

           this.list.push('background');

          }

           }

       });

    };

   </script>

   <div id="box">

    <input type="button" value="添加" @click="add">

    <ul>

    <li v-for="(val,index) in list">

      {{val}} {{index}}

    </li>

    </ul>

  </div>

自定义键盘指令

      之前:Vue.directive('on').keyCodes.f1=17;

    现在:  Vue.config.keyCodes.ctrl=17

      例如:

      <script>

      //Vue.directive('on').keyCodes.ctrl=17;

      Vue.config.keyCodes.ctrl=17;

       window.onload=function(){

      new Vue({

        el:'#box',

        data:{

          },

        methods:{

       change(){

       alert('改变了');

       }

       }

       });

     };

    </script>

     <div id="box">

    <input type="text" @keyup.ctrl="change">

   </div>

   window.onload=function(){

new Vue({

  el:'#box',

  data:{

  list:['width','height','border']

  },

   methods:{

  add(){

  this.list.push('background');

   }

  }

  });

  };

   <div id="box">

  <input type="button" value="添加" @click="add">

  <ul>

   <li v-for="(val,index) in list" :key="index">

  {{val}} {{index}}

  </li>

  </ul>

 </div>

过滤器

    之前:

      系统就自带很多过滤

        {{msg | currency}}

        {{msg | json}}

        ....

        limitBy

        filterBy

        .....

      一些简单功能,自己通过js实现

    到了2.0, 内置过滤器,全部删除了

    自定义过滤器——还有

      但是,自定义过滤器传参

      之前: {{msg | toDou '12' '5'}}

      现在: {{msg | toDou('12','5')}}

    例如:

  <script>

    Vue.filter('toDou',function(n){

     //alert(input);

    return n<10?'0'+n:''+n;

    });

   window.onload=function(){

    new Vue({

      el:'#box',

      data:{

       msg:9

      }

    });

    };

  </script>

    例如:

<script>

Vue.filter('toDou',function(n,a,b){

alert(a+','+b);

//alert(input);

return n<10?'0'+n:''+n;

});

window.onload=function(){

new Vue({

el:'#box',

data:{

msg:9

}

});

};

</script>

  <div id="box">

{{msg | toDou('12','5')}}

</div>

上一篇:vue2.0构建淘票票webapp


下一篇:vue2.0路由变化1