美文网首页
vue基本语法2

vue基本语法2

作者: 過眼云烟 | 来源:发表于2019-05-29 20:39 被阅读0次
vue的模板里面 所有的内容要被一个根节点包含起来
<template>
<!-- vue的模板里面 所有的内容要被一个根节点包含起来  -->
  <div id="app">  
          <h2>{{msg}}</h2>
      <br>
      这是一个根组件
    <br>
    <h3>{{obj.name}}</h3>
    <br>
    <hr>
    <br />
    <ul>
      <li v-for="item in list">
          {{item}}
      </li>
    </ul>
    <br>
    <hr>
    <br />
    <ul>
      <li v-for="item in list1">
          {{item.title}}
      </li>
    </ul>
     <br>
      <hr>
      <br />
      <ul>
        <li v-for="item in list2">
            {{item.cate}}

            <ol>
              <li v-for="news in item.list">
                  {{news.title}}
              </li>
            </ol>
        </li>
      </ul>
  </div>
</template>
<script>
    export default {     
      data () {  /*业务逻辑里面定义的数据*/
        return {
          msg: '你好vue',
          obj:{
            name:"张三"
          },
          list:['111','222','333'],
          list1:[
            {'title':'11111'},
            {'title':'222'},
            {'title':'333333'},
            {'title':'44444'}
          ],
          list2:[
              {
                "cate":"国内新闻",
                "list":[
                   {'title':'国内新闻11111'},
                   {'title':'国内新闻2222'}
                ]
              },
              {
                "cate":"国际新闻",
                "list":[
                   {'title':'国际新闻11111'},
                   {'title':'国际新闻2222'}
                ]
              }
          ]
        }
      }
    }
</script>
数据循环遍历
  <div id="app">  
          <h2>{{msg}}</h2>
      <br>
      这是一个根组件
    <br>
    <h3>{{obj.name}}</h3>
    <br>
    <hr>
    <br />
    <ul>
      <li v-for="item in list">
          {{item}}
      </li>
    </ul>
    <br>
    <hr>
    <br />
    <ul>
      <li v-for="item in list1">
          {{item.title}}
      </li>
    </ul>
     <br>
      <hr>
      <br />
      <ul>
        <li v-for="item in list2">
            {{item.cate}}
            <ol>
              <li v-for="news in item.list">
                  {{news.title}}
              </li>
            </ol>
        </li>
      </ul>
  </div>
</template>
<script>
    export default {     
      data () {  /*业务逻辑里面定义的数据*/
        return {
          msg: '你好vue',
          obj:{
            name:"张三"
          },
          list:['111','222','333'],
          list1:[
            {'title':'11111'},
            {'title':'222'},
            {'title':'333333'},
            {'title':'44444'}
          ],
          list2:[
              {
                "cate":"国内新闻",
                "list":[

                   {'title':'国内新闻11111'},
                   {'title':'国内新闻2222'}
                ]
              },
              {
                "cate":"国际新闻",
                "list":[

                   {'title':'国际新闻11111'},
                   {'title':'国际新闻2222'}
                ]
              }

          ]

        }
      }
    }
</script>
数据绑定
<template>
  <div id="app">  
          <h2>{{msg}}</h2>
      <br>
      <div v-bind:title="title">鼠标瞄上去看一下</div>
      <img src="https://www.itying.com/themes/itying/images/logo.gif" />
       <br>
        <br>
              <!-- 绑定属性 -->
       <img v-bind:src="url" />
        <br>
        <img :src="url" />
        <br>
        <br>
        {{h}} 
        <!-- 绑定html -->
        <div v-html="h">
        </div>
        <!-- 绑定数据的另一种方法 -->
       <div v-text="msg">
       </div>
         <!-- v-bind:class  :class的使用 -->
       <div v-bind:class="{'red':flag}">
        我是一个div
       </div>
    <br>
    <br>
    <div :class="{'red':flag,'blue':!flag}">
          我是另一个div
    </div>
      <br>
      <br>
      <!-- 循环数据 第一个数据高量 -->
      <ul>
        <li v-for="(item,key) in list">
          {{key}}---{{item}}
        </li>
      </ul>
        <br>
        <br>
      <ul>
        <li v-for="(item,key) in list"  :class="{'red':key==0,'blue':key==1}">
          {{key}}---{{item}}
        </li>
      </ul>
      <br>
      <br>
      <!-- v-bind:style  :style的使用 -->
    <div class="box" v-bind:style="{'width':boxWdith+'px'}">
      我是另一个div
    </div>
  </div>
</template>
<script>
    export default {     
      data () {  /*业务逻辑里面定义的数据*/
        return {
          msg: '你好vue',
          title:'我是一个title',
          url:'https://www.itying.com/themes/itying/images/logo.gif',

          h:'<h2>我是h2</h2>',
          list:['1111','2222','3333'],
          flag:false,
          boxWdith:500
        }
      }
    }
</script>
<style lang="scss">
  .red{
    color: red;
  }
  .blue{
    color:blue;
  }
  .box{
    height: 100px;
    width: 100px;
    background: red;
  }
</style>
数据绑定改变试讲
<template>
  <div id="app">  
          <h2>{{msg}}</h2>
      <input type="text" v-model='msg' />
      <button v-on:click="getMsg()">获取表单里面的数据get</button>
      <button v-on:click="setMsg()">设置表单的数据set</button>
      <br>
      <br>
      <hr>
      <br>
      <br>
      <input type="text" ref="userinfo" />
      <br>
      <br>
      <div ref="box">我是一个box</div>
      <br>
      <br>
      <button v-on:click="getInputValue()">获取第二个表单里面的数据</button>
     </div>
</template>
<script>
  /*
  双向数据绑定   MVVM   vue就是一个MVVM的框架。
  M  model
  V  view
  MVVM:  model改变会影响视图view,view视图改变反过来影响model
  双向数据绑定必须在表单里面使用。
  */
    export default {     
      data () {  /*业务逻辑里面定义的数据*/
        return {
          msg: '你好vue'         
        }
      },methods:{   /*放方法的地方*/
          getMsg(){
              // alert('vue方法执行了');
              //方法里面获取data里面的数据
                alert(this.msg);
          },
          setMsg(){
              this.msg="我是改变后的数据";
          }, getInputValue(){
              //获取ref定义的dom节点
              console.log(this.$refs.userinfo);
              this.$refs.box.style.background='red';
              alert(this.$refs.userinfo.value);
                      
          }
      }
    }
</script>
定义方法 执行方法 获取数据 改变数据 执行方法传值及事件对象
<template>
  <div id="app">  
    <!-- 
      <img v-bind:src='url' />
      <img :src='url' /> -->
      {{msg}}
    <br>
    <br>
    <br>
      <button v-on:click="run1()">执行方法的第一种写法</button>
      <br><br><br>
      <button @click="run2()">执行方法的第二种写法</button>
      <br>
      <br>
      <br>
           <button @click="getMsg()">获取data里面的msg</button>
      <br>
      <br>
      <br>
            <button @click="setMsg()">改变data里面的msg</button>
      <br>
      <br>
      <br>
            <button @click="requestData()">请求数据</button>
      <hr>
      <ul>
        <li v-for="(item,key) in list">
          {{key}}---   {{item}}
        </li>
      </ul>
      <br>
      <br>
      <br>
      <button @click="deleteData('111')">执行方法传值111</button>
      <br>
      <br>
      <button @click="deleteData('222')">执行方法传值2222</button>
      <br>
      <br>
      <br>
      <button data-aid='123' @click="eventFn($event)">事件对象</button>      
  </div>
</template>
<script>
    export default {     
      data () { 
        return {
          msg: '你好vue',
          list:[]      
        }
      },
      methods:{
        run1:function(){
          alert('这是一个方法');
        },
        run2(){
          alert('这是另一个方法');
        },
        getMsg(){
            alert(this.msg);
        },
        setMsg(){

          this.msg="我是改变后的数据"
        },
        requestData(){

            for(var i=0;i<10;i++){

              this.list.push('我是第'+i+'条数据');
            }
        }
        ,
        deleteData(val){

            alert(val);
        },
        eventFn(e){
          console.log(e);
          // e.srcElement  dom节点
          e.srcElement.style.background='red';
          console.log(e.srcElement.dataset.aid);  /*获取自定义属性的值*/
        }
      }
    }
</script>
事件结合双向数据绑定实现
<template>
  <div id="app"> 
            <input type="text" v-model='todo' />
      <button @click="doAdd()">+增加</button>
      <br>
      <hr>
      <br>
      <ul>
        <li v-for="(item,key) in list">
          {{item}}   ----  <button @click="removeData(key)">删除</button>
        </li>
      </ul>
  </div>
</template>
<script>
    export default {     
      data () { 
        return {
          todo:'' ,
          list:[]
        }
      },
      methods:{
        doAdd(){
            //1、获取文本框输入的值   2、把文本框的值push到list里面
            this.list.push(this.todo);
            this.todo='';
        },
        removeData(key){
            // alert(key)
            //splice  js操作数组的方法
            this.list.splice(key,1);
        }
      }
    }
</script>
事件结合双向数据绑定实现
<template>
  <div id="app"> 
            <input type="text" v-model='todo' @keydown="doAdd($event)" />
      <br>
      <hr>
      <br>
    <h2>进行中</h2>
          <ul>
            <li v-for="(item,key) in list" v-if="!item.checked">
              <input type="checkbox" v-model='item.checked'> {{item.title}}   ----  <button @click="removeData(key)">删除</button>
            </li>
          </ul>
    <br>
    <h2>已完成</h2>
    <ul class="finish">
      <li v-for="(item,key) in list" v-if="item.checked">
          <input type="checkbox" v-model='item.checked'> {{item.title}} ----<button @click="removeData(key)">删除</button>
      </li>
    </ul>
    <h2 v-if='ok'>这是一个ok</h2>
    <h2 v-if='!ok'>这是一个No</h2>
    <button @click="getList()">获取list的值</button>
  </div>
</template>
<script>
    export default {     
      data () { 
        return {
          ok:false,
          todo:'' ,
          list: [
            {
              title: '录制nodejs',
              checked: true
            },
            {
              title: '录制ionic',
              checked: false
            }
          ]
       }
      },
      methods:{
        doAdd(e){
              console.log(e.keyCode)
              if(e.keyCode==13){
              //1、获取文本框输入的值   2、把文本框的值push到list里面
              this.list.push({
                title: this.todo,
                checked: false
              })
              this.todo='';
            }
        },
        removeData(key){
            // alert(key)
            //splice  js操作数组的方法
            this.list.splice(key,1);
        },
        getList(){
          console.log(this.list)
        }
      }

    }
</script>
<style lang="scss">
.finish{
   li{
    background:#eee;
  }
}
</style>
vue中的模块化及分装Storage实现Storage实现todolist待办事项 已完成和进行中
<template>
  <div id="app"> 
            <input type="text" v-model='todo' @keydown="doAdd($event)" />
        <hr>
    <br>
    <h2>进行中</h2>
      <ul>
        <li v-for="(item,key) in list" v-if="!item.checked">
           <input type="checkbox" v-model="item.checked" @change="saveList()" /> {{item.title}}   --  <button @click="removeData(key)">删除</button>
        </li>
      </ul>
    <br>  
    <br>
    <h2>已完成</h2>
      <ul>      
        <li v-for="(item,key) in list" v-if="item.checked">
          <input type="checkbox"  v-model="item.checked" @change="saveList()" /> {{item.title}}  -- <button @click="removeData(key)">删除</button>
        </li>
      </ul>
  </div>
</template>
<script>
    export default {     
      data () { 
        return {
           todo:'' ,
          list: []
        }
      },
      methods:{
        doAdd(e){
              // console.log(e);
              if(e.keyCode==13){
                  this.list.push({
                    title:this.todo,
                    checked:false
                  })
              }
              localStorage.setItem('list',JSON.stringify(this.list))
        },
        removeData(key){
            this.list.splice(key,1)
            localStorage.setItem('list', JSON.stringify(this.list))
        }
        , saveList(){
           localStorage.setItem('list', JSON.stringify(this.list))
        }
      },mounted(){   /*生命周期函数       vue页面刷新就会触发的方法*/
          var list=JSON.parse(localStorage.getItem('list'));
          if(list){  /*注意判断*/
            this.list=list;
          }
      }
    }
</script>
<style lang="scss">
.finish{
  li{
    background:#eee;
  }
}
</style>

相关文章

  • 《二》、Vue核心——基本使用

    一、Vue的基本使用 1、编码 2、理解 Vue 的 MVVM 3、模板语法 (1)、模板语法的理解  Ⅰ、动态的...

  • vue基本语法2

    vue的模板里面 所有的内容要被一个根节点包含起来 数据绑定 数据绑定改变试讲 定义方法 执行方法 获取数据 改变...

  • Vue学习(2)-基本语法

    通过上一次的学习,已经搭建了Vue的框架,这次来学习一下基本Vue的语法。以下操作在App.vue中进行。 {{}...

  • vue3学习

    一、基础语法 1、双向数据绑定 vue2 vue3 2、ref, reactive ref:一般用在定义基本类型和...

  • Vue基本语法

    一、Vue介绍 1、Vue.js 是什么 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面...

  • vue基本语法

    模板语法 文本 使用{{}}进行数据绑定 原始html 属性 使用表达式 指令 指令带有v前缀的属性 参数 动态参...

  • Vue基本语法

    一、Mustache 如何将data中的文本数据,插入到HTML中呢?我们已经学习过了,可以通过Mustache语...

  • vue基本语法

    快速入门 v-on: click 事件绑定 v-on:keydom 键盘绑定 v-on:mouseover 获取焦...

  • VUE基本语法

    一、template 二、script 三、style

  • vue基本语法

    一、推荐插件 Live Server 插件,保存后自动刷新浏览器 open in browser, 可以将htm...

网友评论

      本文标题:vue基本语法2

      本文链接:https://www.haomeiwen.com/subject/jqsutctx.html