zoukankan      html  css  js  c++  java
  • Vue基础,数据绑定,事件绑定

    <template>
      <div id="app">
        <!-- 1.{{msg}}绑定数据-->
        <h2>你好vue--{{msg}}</h2>
    
        <br />
    这是一个根组件
        <br />
        <h3>{{obj.name}}</h3>
    
        <br />
        <hr />
        <!--2.数组循环遍历-->
        <ul>
          <li v-for="(item,index) in list">
            <!-- index获取索引值-->
            {{index}}--{{item}}
          </li>
        </ul>
        <!--2.1数组嵌套遍历-->
        <ul>
          <li v-for="item in list1">
            {{item.cate}}
            <ol>
              <li v-for="cars in item.list">{{cars.title}}</li>
            </ol>
          </li>
        </ul>
    
        <br />
        <hr />
        <!--3.条件判断-->
        <p v-if="no">现在你看到我了</p>
        <p v-if="true">现在你看到我了</p>
        <p v-if="ok">现在你看到我了</p>
    
        <br />
        <hr />
        <!--4.数据绑定-->
        <div v-bind:title="title">鼠标瞄上可以显示</div>
        <img src="//www.baidu.com/img/xinshouyedong_4f93b2577f07c164ae8efa0412dd6808.gif" alt />
        <img :src="src" alt />
        <!--4.数据绑定v-bind:可以简写为:-->
    
        <br />
        <hr />
        <!--5.html绑定-->
        <div v-html="h"></div>  <!--解析成html输出-->
    
        <br />
        <hr />
        <!--6.class绑定-->
        <div v-bind:class="{'blue':ok}">我是一个div :class控制</div>
        <!--6.1.class绑定-->
        <ul>
          <li v-for="(item,index) in list" :class="{'blue':index==0}">
            <!-- index获取索引值-->
            {{index}}--{{item}}
          </li>
        </ul>
    
        <br />
        <hr />
        <!--7.style对象绑定-->  <!--也可以是内联样式-->
        <div v-bind:style="styleObject">我是一个div :style控制</div>
    
        <br />
        <hr />
        <!--8.双向数据绑定及事件绑定  -->
        <h2>{{msg}}</h2>
        <input type="text" v-model="msg" />  <!--input和h2里的msg值同时变化-->
        <button v-on:click="getMsg()">获取表单里面的数据get</button>  <!--v-on:可以简写为@-->
        <button @click="setMsg()">设置表单的数据set</button>
        <br />
        <input type="text" ref="userinfo" />
        <br />
        <div ref="box">我是一个box</div>
        <br />
        <button v-on:click="getInputValue()">获取第二个表单里面的数据</button>
        <br /> <br />
        <button @click='requestData()'>请求数据</button>
        <p>--------------------------------</p>
        <ul>
          <li v-for="item in list0">  <!--点击请求数据,在li里出现-->
            {{item}}
          </li>  
        </ul>
        <button @click="deleteData(111)">执行方法传值111</button> <!--可添加事件及按键修饰符:@click.stop ...  -->
        <button data-aid="自定义的属性" @click="event($event)">事件对象</button>
    
        <br>
        <hr>
        <!-- 9.todoLis待办事项t添加删除修改状态-->  <!--用双向数据绑定-->
        <input type="text" v-model="todo" @keydown="doAdd($event)"> <!--事件对象对enter键执行doAdd事件-->
        <button @click="doAdd()">+增加</button>
        <br>---------------------------------
        <h2>进行中</h2>
        <ul>
          <li v-for="(item,index) in list3" v-if="!item.checked"> 
            <input type="checkbox" v-model="item.checked"> {{item.title}}-- <button @click="doRemove(index)">-删除</button>
          </li>  
        </ul>
        <h2>已完成</h2>
         <ul>
          <li v-for="(item,index) in list3" v-if="item.checked"> 
            <input type="checkbox" v-model="item.checked"> {{item.title}}-- <button @click="doRemove(index)">-删除</button>
          </li>  
        </ul>
        
      </div>
    </template>
    
    <script>
    export default {
      name: "app",
      data() {
        //业务逻辑里面定义的数据,可以是属性,对象,数组。。。
        return {
          ok: true,
          no: false,
          msg: "你好vue",
          obj: {
            name: "Jack"
          },
          list: ["111", "222", "333"],
          list1: [
            {
              cate: "汽车品牌",
              list: [{ title: "大众" }, { title: "奥迪" }]
            },
            {
              cate: "汽车品牌",
              list: [{ title: "大众" }, { title: "奥迪" }]
            }
          ],
          title: "我是一个title",
          src:
            "//www.baidu.com/img/xinshouyedong_4f93b2577f07c164ae8efa0412dd6808.gif",
          h: "<h2>我是h2</h2>",
          styleObject: {
            color: "red",
            fontSize: "22px"
          },
          list0:[],
          todo:'',
          list3:[{
            title:'学习vue',
            checked:false,
    
          }],
        };
      },
      methods: {
        /*放方法的地方*/
        getMsg() {
          // alert('vue方法执行了');
          //方法里面获取data里面的数据
          alert(this.msg);
        },
        setMsg() {
          this.msg = "我是改变后的数据";
        },
        getInputValue() {
          console.log(this.$refs.userinfo);
          this.$refs.box.style.background = "red";
          //获取ref定义的dom节点
          alert(this.$refs.userinfo.value);
        },
        requestData(){
          for(var i=0;i<=4;i++){
            this.list0.push('我是第'+i+'条数据。');
          }
        },
        deleteData(d){
          alert(d);
        },
        event(e){
          // e.srcElement 获取dom节点
          e.srcElement.style.background='red';
          alert(e.srcElement.dataset.aid); //打印自定义属性的值
        },
        doAdd(){
          //获取文本框输入的值 再把文本框的值push到list3 用对象来判断改变状态
          this.list3.push({
            title:this.todo,
            checked:false
          });
          //push完之后初始化todo的值
          this.todo='';
        },
        doAdd(e){
          if(e.keyCode==13){
            this.list3.push({
            title:this.todo,
            checked:false
          });
          //push完之后初始化todo的值
          this.todo='';
          }
        },
        doRemove(index){
          // alert(index)
          this.list3.splice(index,1);
        },
    
      }
    };
    </script>
    
    <style lang="css">
    .blue {
      color: blue;
      color: red;
    }
    *{
      list-style: none;
    }
    </style>
  • 相关阅读:
    windows10使用记录
    DevOps理论与实践总结
    工资调整
    Node程序debug小记
    基于游标的分页接口实现
    util.promisify 的那些事儿
    如何编写 Typescript 声明文件
    async语法升级踩坑小记
    使用TS+Sequelize实现更简洁的CRUD
    使用 TypeScript 改造构建工具及测试用例
  • 原文地址:https://www.cnblogs.com/wangdongwei/p/11989562.html
Copyright © 2011-2022 走看看