美文网首页
vue 小知识点一

vue 小知识点一

作者: Hello杨先生 | 来源:发表于2020-02-17 16:25 被阅读0次
    计算属性能直接在双向绑定中使用*有缓存
    <p>Computed reversed message: "{{ reversedMessage }}"</p>
     computed: {
        // 计算属性的 getter
        reversedMessage: function () {
          // `this` 指向 vm 实例
          return this.message.split('').reverse().join('')
        }
      }
    
    绑定多个class
     v-bind:class="{ active: isActive, 'text-danger': hasError }"
    data: {
      isActive: true,
      hasError: false
    }
    
    绑定style
    <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
    
    <div v-bind:style="[baseStyles, overridingStyles]"></div>
    
    <div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>
    style 绑定中的属性提供一个包含多个值的数组,常用于提供多个带前缀的值
    
    <div v-bind:style="styleObject"></div>
    data: {
      styleObject: {
        color: 'red',
        fontSize: '13px'
      }
    }
    
    
    
    
    v-for 的优先级比 v-if 更高,这意味着 v-if 将分别重复运行于每个 v-for 循环中
    
    <!-- 阻止单击事件继续传播 -->
    <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>
    
    <!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
    <!-- 即事件不是从内部元素触发的 -->
    <div v-on:click.self="doThat">...</div>
    
    <!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
    <!-- 而不会等待 `onScroll` 完成  -->
    <!-- 这其中包含 `event.preventDefault()` 的情况 -->
    <div v-on:scroll.passive="onScroll">...</div>
    
    修饰符
    在默认情况下,`v-model` 在每次 `input` 事件触发后将输入框的值与数据进行同步 (除了[上述](https://cn.vuejs.org/v2/guide/forms.html#vmodel-ime-tip)输入法组合文字时)。你可以添加 `lazy` 修饰符,从而转变为使用 `change` 事件进行同步:
    
    <!-- 在“change”时而非“input”时更新 -->
    <input v-model.lazy="msg" >
    
    
    如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符:
    /******************************************有用
    <input v-model.number="age" type="number">
    这通常很有用,因为即使在 type="number" 时,HTML 输入元素的值也总会返回字符串。如果这个值无法被 parseFloat() 解析,则会返回原始的值。
    
    
    如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符:
    
    <input v-model.trim="msg">
    
    
    v-slot 只能添加在 <template> 上 
    
    
    我们可以为组件的 prop 指定验证要求,例如你知道的这些类型。如果有一个需求没有被满足,则 Vue 会在浏览器控制台中警告你。这在开发一个会被别人用到的组件时尤其有帮助。
    
    为了定制 prop 的验证方式,你可以为 props 中的值提供一个带有验证需求的对象,而不是一个字符串数组。例如:
    
    Vue.component('my-component', {
      props: {
        // 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证)
        propA: Number,
        // 多个可能的类型
        propB: [String, Number],
        // 必填的字符串
        propC: {
          type: String,
          required: true
        },
        // 带有默认值的数字
        propD: {
          type: Number,
          default: 100
        },
        // 带有默认值的对象
        propE: {
          type: Object,
          // 对象或数组默认值必须从一个工厂函数获取
          default: function () {
            return { message: 'hello' }
          }
        },
        // 自定义验证函数
        propF: {
          validator: function (value) {
            // 这个值必须匹配下列字符串中的一个
            return ['success', 'warning', 'danger'].indexOf(value) !== -1
          }
        }
      }
    })
    当 prop 验证失败的时候,(开发环境构建版本的) Vue 将会产生一个控制台的警告。
    
    

    相关文章

      网友评论

          本文标题:vue 小知识点一

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