美文网首页
二、vue从入门到进阶:指令与事件

二、vue从入门到进阶:指令与事件

作者: 负15厘米的爱 | 来源:发表于2019-04-22 17:51 被阅读0次

1.插值

v-once:插入一次值,但不会再次改变。
<span v-once>这个将不会改变: {{ msg }}</span>

2.使用 JavaScript 表达式

js
{{ number + 1 }}

{{ ok ? 'YES' : 'NO' }}

{{ message.split('').reverse().join('') }}

<div v-bind:id="'list-' + id"></div>

二.v-bind与v-on的缩写

v-bind 缩写
<!-- 完整语法 -->
<a v-bind:href="url"></a>

<!-- 缩写 -->
<a :href="url"></a>

<!-- 完整语法 -->
<button v-bind:disabled="isButtonDisabled">Button</button>

<!-- 缩写 -->
<button :disabled="isButtonDisabled">Button</button>

v-on 缩写
<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>

<!-- 缩写 -->
<a @click="doSomething">...</a>

三.条件渲染

<div v-if="Math.random() > 0.5">
  Now you see me
</div>
<div v-else>
  Now you don't
</div>

<div v-if="type === 'A'">
  A
</div>
<div v-else-if="type === 'B'">
  B
</div>
<div v-else-if="type === 'C'">
  C
</div>
<div v-else>
  Not A/B/C
</div>
#v-show
<h1 v-show="ok">Hello!</h1>
不同的是带有 v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS 属性 display。

四.列表渲染v-for

1.循环数组

in==of
 <li v-for="(item, index) in items">  or(<div v-for="item of items"></div>)
    {{ parentMessage }} - {{ index }} - {{ item.message }}
  </li>
var example2 = new Vue({
  el: '#example-2',
  data: {
    parentMessage: 'Parent',
    items: [
      { message: 'Foo' },
      { message: 'Bar' }
    ]
  }
})
result 
Parent - 0 - Foo
Parent - 1 - Bar
##=========
##2.循环对象
<ul id="v-for-object" class="demo">
  <li v-for="value in object">
    {{ value }}
  </li>
</ul>
new Vue({
  el: '#v-for-object',
  data: {
    object: {
      firstName: 'John',
      lastName: 'Doe',
      age: 30
    }
  }
})
<div v-for="(value, key, index) in object" key="item.id">
//索引     ///对象属性名字  //值
  {{ index }}. {{ key }}: {{ value }}
</div>

out==>
1.firstName: John
2.lastName: Doe
3.age: 30

##key
##为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你##需要为每项提供一个唯一 key 属性。理想的 key 值是每项都有的且唯一的 id。

自己使用.

代码块
1.注册组件
Vue.component('vue-radio2', {
    props: {radio:['radio'],deful:['deful']},
    methods: {
        change() {
            this.$emit('input', this.radio.codeValue);
        }
    },
    computed: {
        isSelect: function () {
            console.log(this.deful)
            console.log(this.radio.codeValue)
            console.log(this.radio.codeValue === this.deful)
            return this.radio.codeValue === this.deful;
        }
    },
    template: '' +
        '<div class="layui-unselect layui-form-radio" :class="{\'layui-form-radioed\':isSelect}" @click="change" >' + '\n' +
        '<i v-if="isSelect" class="layui-anim layui-icon layui-anim-scaleSpring"></i>' + '\n' +
        '<i v-else class="layui-anim layui-icon"></i>' + '\n' +
        '<span>{{radio.codeName}}</span>' + '\n' +
        '</div>'
});
2.
<vue-radio2 code-key="sys_organ_type" v-model="organ.organType" v-for="item in radioList"
                                        v-bind:radio="item"
                                        v-bind:deful="organ.organType"
                                        v-bind:key="item.id">
                            </vue-radio2>
1. v-model绑定对应的值。
2. v-for 循环 radioList ==>从后台获取
3.v-bind:radio 对应的单独对象
   v-bind:deful: 默认值。
   v-bind:key:需要一个key.
3.
往groceryList2,添加对应的对象。
 <input
                                    v-model="newTodoText"
                                    v-on:keyup.enter="addNewTodo"
                                    placeholder="Add a todo"
                            >
  addNewTodo: function () {
            this.groceryList2.push({
                id:"sdsdsd",text:this.newTodoText,value:"sadasda"
            })
        },
          

事件修饰符

.stop
.prevent
.capture
.self
.once

<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>

按键修饰符

.enter
.tab
.delete (捕获“删除”和“退格”键)
.esc
.space
.up
.down
.left
.right

<input v-on:keyup.13="submit">

<input v-on:keyup.enter="submit">

<input @keyup.enter="submit">

通过全局 config.keyCodes 对象自定义按键修饰符别名:

// 可以使用 v-on:keyup.f1
Vue.config.keyCodes.f1 = 112

六.表单输入绑定v-model

<input v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>

修饰符.lazy,.number,.trim


<input v-model.lazy="msg" >
如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符:(+-e还是可以输入)
<input v-model.number="age" type="number">
消除空格
<input v-model.trim="msg">

相关文章

网友评论

      本文标题:二、vue从入门到进阶:指令与事件

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