一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務(wù)器之家 - 編程語言 - JavaScript - 用vue.js組件模擬v-model指令實(shí)例方法

用vue.js組件模擬v-model指令實(shí)例方法

2021-08-02 00:45翱翔天地 JavaScript

在本篇文章里小編給各位整理的是關(guān)于用vue.js組件模擬v-model指令實(shí)例方法和相關(guān)代碼,需要的朋友們可以跟著學(xué)習(xí)下。

1、問題描述

在使用v-model指令實(shí)現(xiàn)輸入框數(shù)據(jù)雙向綁定,輸入值時對應(yīng)的這個變量的值也隨著變化;但是這里不允許使用v-model,需要寫一個組件實(shí)現(xiàn)v-model指令效果

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<div id="user">
  <input type="text" v-model="username">
  <label>{{username}}</label>
</div>
 
<script>
  let v = new Vue({
    el:'#user',
    data:{
     username:'zhangsan'
    }
  })
</script>

2、實(shí)現(xiàn)源碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Vue模擬v-model指令</title>
        <script src="../js/vue.js"></script>
    </head>
    <body>
        <div id="datas">
            <input-model :value="num" @inputchange="num=arguments[0]"></input-model>
            <br>
            <span>
                {{num}}
            </span>
        </div>
        <script>
            Vue.component('input-model',{
                template:`<input type="text" :svalue="cvalue" @input="updateInput">`,
                computed: {
                    cvalue() {
                        return this.svalue
                    }
                },
                props:['svalue'],
                methods: {
                    updateInput: function(event){
                        let values = event.target.value
                        this.$emit('inputchange',values)
                    }
                }
            });
            
            let v = new Vue({
                el:'#datas',
                data: {
                    num:'1'
                }
            })
        </script>
    </body>
</html>

3、注意事項(xiàng)

(1)父組件中使用子組件,綁定的inputchange必須小寫,不能使用inputChange;

(2)子組件中的cvalue和計(jì)算屬性中的要保持一致;

(3)子組件中的@input和父組件中的@inputchange沒有必然關(guān)系;

(4)this.$emit('inputchange',values)中的inputchange要和DOM元素中的input-model一致

(5)父組件將num值通過props屬性傳到子組件中;子組件通過$emit觸發(fā)當(dāng)前實(shí)例上的事件,將改變的值傳給父組件

內(nèi)容擴(kuò)展:

vue.js指令v-model實(shí)現(xiàn)方法

V-MODEL 是VUE 的一個指令,在input 控件上使用時,可以實(shí)現(xiàn)雙向綁定。

通過看文檔,發(fā)現(xiàn)他不過是一個語法糖。

實(shí)際是通過下面的代碼來實(shí)現(xiàn)的:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<%@ page language="java" contentType="text/html; charset=utf-8"
 pageEncoding="utf-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <script type="text/javascript" src="vue/vue.js"></script>
</head>
<body>
 <div id="app-6">
 <input :value="person.name" @input="person.name = $event.target.value">
 <input :value="person.age" @input="person.age =$event.target.value">
 {{person}}
 </div>
 <script type="text/javascript">
 var app =new Vue({
 el: '#app-6',
 data:{
 person:{name:"ray",age:19}
 }
 })
 </script>
</body>
</html>

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人精品视频一区二区不卡 | 欧美x×x | 国产美女亚洲精品久久久综合91 | 四虎永久在线精品波多野结衣 | 午夜欧美精品久久久久久久 | 日韩欧美中文字幕一区 | 国产麻豆剧果冻传媒观看免费视频 | 97伊人久久精品亚洲午夜 | 日日本老女人 | 日韩毛片基地一区二区三区 | 日本色资源 | 日韩大片在线播放 | 日本a在线天堂 | 亚洲精品一二三四 | 大陆国产vs国产对白 | 91综合精品网站久久 | 亚洲精品无码不卡在线观看 | 欧美最猛性xxxxx男男 | 大胸纲手被羞羞漫画网站 | 青草精品 | 白丝超短裙被输出娇喘不停小说 | 久久精品人人做人人爽97 | 色愉拍亚洲偷自拍 | 亚洲ss | 999热这里只有精品 999久久久免费精品国产牛牛 | 国产精品va在线观看不 | 深夜在线 | 日本妻子迷妹网 | 好硬好大好浪夹得好紧h | 四虎影院入口 | 国内精品久久久久久久 | 日本b站一卡二不卡三卡四卡 | 黄漫在线播放 | 国产思妍小仙女一二区 | 狠狠做五月深爱婷婷天天综合 | 粗暴hd另类另类 | 国产午夜大片 | 亚洲精品AV无码喷奶水糖心 | freee×xx性欧美| 亚洲第一在线 | 国产精品青青在线观看香蕉 |