zoukankan      html  css  js  c++  java
  • vue入门学习

    var vm = new Vue {
      el: "#my_id"
      , data: {
        name: "test"
        ,url: ""
          ,txt:"测试" 
      }
      ,methods: {
        GetData: function(){
          //获取数据
              return this.txt;
        }
      }
      ,computed: { 
        // 计算属性的 getter 
        reversedMessage: function () { 
          // `this` 指向 vm 实例 
          return this.txt.split('').reverse().join('');//反转字符串
        } 
      }
       ,filters: {
        capitalize: function (value) { 
           if (!value) return '';
            return value;
         }
       }
    };
    
    <div id = "my_id">
    {{ txt| capitalize }}
    </div>
    
    data 用于定义属性,实例中有3个属性分别为:name、url、txt;
    methods 用于定义的函数,可以通过 return 来返回函数值;
    调用实例属性和方法:
    vm.$el == "my_id";
    alert(vm.$data);
    
    methods,computed,效果上两个都是一样的;
    computed 基于依赖缓存,只有相关依赖发生改变时才会重新取值。
    而使用 methods ,在重新渲染的时候,函数总会重新调用执行。
    

      

    computed 属性默认只有 getter ,不过在需要时你也可以提供一个 setter 

    var vm = new Vue({ el: '#app', data: { name: 'a', url: 'http://www.google.com' }, computed: { site: { // getter get: function () { return this.name + ' ' + this.url }, // setter set: function (newValue) { var names = newValue.split(' ') this.name = names[0] this.url = names[names.length - 1] } } } }) // 调用 setter, vm.name 和 vm.url 也会被对应更新 vm.site = 'B http://www.baidu.com';

      

    v-html: 输出html代码
    <div id="app"> 
      <div v-html="message"></div> 
    </div> 
    <script> new Vue({ el: '#app', data: { message: '<h1>菜鸟教程</h1>' } }) </script>
    
    指令: 带有 v- 前缀的特殊属性
    v-bind 被用来响应地更新 HTML 属性
    v-if/v-else-if/v-else
    v-show 
    v-for
    v-model : 在input、select、textarea、checkbox、radio 等表单控件元素上,
                   创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。
    v-on 监听 DOM 事件
    

     

    v-for:

    <div id="app">
      <ul>
        <li v-for="value in object"> {{ value }} </li>
      </ul>
      <ul> 
        <li v-for="(value, key)in object">{{key}}: {{ value }} </li>
      </ul>
      <ul> 
        <li v-for="(value, key, index)in object">{{index}}.{{key}}: {{ value }} </li>
      </ul>
    </div> 

    <script> new Vue({ el: '#app', data: { object: { name: 'a', url: '' } } }) </script>

      

    //监听属性
    
    <div id = "computed_props">
        千米 : <input type = "text" v-model = "kilometers">
        米 : <input type = "text" v-model = "meters">
    </div>
    <p id="info"></p>
    
    <script type = "text/javascript">
        var vm = new Vue({
        el: '#computed_props',
        data: {
            kilometers : 0, //双向绑定
            meters:0
        },
        methods: {
        },
        computed :{
        },
        watch : { //实例监听
            kilometers:function(val) {
                this.kilometers = val;
                this.meters = this.kilometers * 1000
            },
            meters : function (val) {
                this.kilometers = val/ 1000;
                this.meters = val;
            }
        }
        });
    
        // $watch 是一个实例方法
        vm.$watch('kilometers', function (newValue, oldValue) {
        // 这个回调将在 vm.kilometers 改变后调用
        document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
    });
    </script>
    

      

    v-bind:class 设置一个对象(字符串或数组),从而动态的切换 class:
    
    <div class="static active text-danger"></div>
    <div class="static"v-bind:class="{ 'active' : isActive, 'text-danger' : hasError }"></div>
    <div v-bind:class="{ 'active': isActive }"></div>
    <div v-bind:class="[activeClass, errorClass]"></div>
    
     v-bind:style 直接设置样式:
    
    <div id="app">
        <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">test</div>
    </div>
    
    <div v-bind:style="styleObject">test</div>
    <div v-bind:style="[baseStyles, overridingStyles]">test</div>
    

      

    v-on:click: 事件处理
    
    <!-- `greet` 是在定义的方法名 -->
    <button v-on:click="greet">Greet</button>
    
    
    处理 DOM 事件细节修饰符,通过由点 . 表示的指令后缀来调用修饰符
    
    .stop - 阻止冒泡
    .prevent - 阻止默认事件
    .capture - 阻止捕获
    .self - 只监听触发该元素的事件
    .once - 只触发一次
    .left - 左键事件
    .right - 右键事件
    .middle - 中间滚轮事件
    
    例如:
    <!-- 阻止单击事件冒泡 -->
    <a v-on:click.stop="doThis"></a>
    <!-- 提交事件不再重载页面 -->
    <form v-on:submit.prevent="onSubmit"></form>
    <!-- 修饰符可以串联  -->
    <a v-on:click.stop.prevent="doThat"></a>
    <!-- 只有修饰符 -->
    <form v-on:submit.prevent></form>
    <!-- 添加事件侦听器时使用事件捕获模式 -->
    <div v-on:click.capture="doThis">...</div>
    <!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
    <div v-on:click.self="doThat">...</div>
    
    <!-- click 事件只能点击一次,2.1.4版本新增 -->
    <a v-on:click.once="doThis"></a>
    
    
    监听键盘按键事件修饰符:
    .enter
    .tab
    .delete (捕获 "删除" 和 "退格" 键)
    .esc
    .space
    .up
    .down
    .left
    .right
    .ctrl
    .alt
    .shift
    .meta
    
    例如:
    <!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
    <input v-on:keyup.13="submit">
    
    <!-- 同上 -->
    <input v-on:keyup.enter="submit">
    <!-- 缩写语法 -->
    <input @keyup.enter="submit">
    
    <p><!-- Alt + C -->
    <input @keyup.alt.67="clear">
    <!-- Ctrl + Click -->
    <div @click.ctrl="doSomething">Do something</div>
    

      

    <!-- 在 "change" 而不是 "input" 事件中更新 -->
    <input v-model.lazy="msg" >
    
    <!-- 输入值转为 Number 类型(如果原值的转换结果为 NaN 则返回原值) -->
    <input v-model.number="age" type="number">
    
    
    <!-- 自动过滤用户输入的首尾空格 -->
    <input v-model.trim="msg">
    

      

  • 相关阅读:
    Navicat for Mysql安装及破解教程
    如何down掉IB交换机口
    pycharm替换文件中所有相同字段方法
    NAS、SAN、ISCSI存储
    Linux系统下安装rz/sz命令及使用说明
    python 实现查找某个字符在字符串中出现次数,并以字典形式输出
    python class用法
    zookeeper
    机器学习基础
    hive--数据仓库
  • 原文地址:https://www.cnblogs.com/easter729/p/14956194.html
Copyright © 2011-2022 走看看