vue學(xué)習(xí)資料一(入門、插值抢呆、雙向綁定)

VUE

構(gòu)建數(shù)據(jù)驅(qū)動的web界面的庫煮嫌,技術(shù)上重點(diǎn)在于MVVM的ViewModel層
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<div>{{msg}}</div>
    <script src="vue.js"></script>
    <script>
    var data = {
        msg: 'hello'
    }
    new Vue({
        el:'div',
        data:data
    })
    </script>
</body>
</html>

如果要改變顯示內(nèi)容

data.msg = 'world'
data.msg = '瑞源先生'

插值

語法: {{key}}
將數(shù)據(jù)中的數(shù)據(jù)同步到頁面中的過程;

var data = {
        msg:'歐走不力大后天呢 色'
    }
    var demo = new Vue({
        el:'.my-app',
        data:data
    })

不僅僅可以還可以插在Dom節(jié)點(diǎn)內(nèi)容中抱虐,還可以插入到屬性中:

<div id="app" class="my-app"><span data-id="{{id}}" style={{styles}}>關(guān)注</span>{{msg}}</div>

<script src="vue.js"></script>
<script>
var data = {
    msg:'瑞源先生早上好',
    styles:"color:orange",
    id:20
}
var demo = new Vue({
    el:'.my-app',
    data:data
})

如果我想更改其中一個昌阿,可以在后面接著寫:


data.styles= 'color:green'

關(guān)注的顏色就從橘黃色變成了綠色;

單次插值

  • 數(shù)據(jù)插入頁面中恳邀,不能再次修改懦冰;
###如果我們不想讓初始值(只想插值一次)發(fā)生變化,我們可以在key前面加上一個 * ,{{ *key}}
<div id="app" class="my-app"><span data-id="{{id}}" style={{*styles}}>關(guān)注</span>{{msg}}</div>

這樣就一直是橘黃色了谣沸;

同樣的案例

  • 修改文案內(nèi)容:
data.msg = '瑞源學(xué)堂歡迎您儿奶!'
- 如果不想修改初始文案的內(nèi)容(只想插值一次)我們同樣可以在key前面加上一個*,{{*key}},
<div id="app" class="my-app"><span data-id="{{id}}" style={{styles}}>關(guān)注</span>{{*msg}}</div>

這樣文案內(nèi)容就不會發(fā)生變化鳄抒;

標(biāo)簽過濾

語法{{{key}}}闯捎,將數(shù)據(jù)中的html標(biāo)簽渲染到頁面中椰弊;

  • 我們想在文案中插入一個標(biāo)簽,把“瑞源先生早上好瓤鼻!”改成“【深圳】瑞源先生在上好秉版!”,【深圳】單獨(dú)用一個標(biāo)簽包裹茬祷,加粗清焕;
var data = {
        msg:'<strong>【深圳】</strong> 瑞源先生早上好!',
        styles:"color:orange",
        id:20
    }

這樣頁面會把<strong></strong>標(biāo)簽顯示出來祭犯;
我們需要這樣操作:

<div id="app" class="my-app"><span data-id="{{id}}" style={{styles}}>關(guān)注</span>{{{*msg}}}</div>

這樣就可以了秸妥;

插值表達(dá)式

插值的過程中,我們可以對插入的數(shù)據(jù)做運(yùn)算處理沃粗,或調(diào)用某些js方法粥惧;

  • 如果我們想在id數(shù)值面前渲染一個人民幣的符號¥
<div id="app" class="my-app">{{'¥' + id}}</div>
var data = {
    id:20
}
var demo = new Vue({
    el:'.my-app',
    data:data
})

¥20就渲染出來了

  • 我們還可以在{{里面進(jìn)行運(yùn)算處理}},我們可以進(jìn)行加減乘除最盅,字符串拼接突雪,對數(shù)據(jù)進(jìn)行js方法的調(diào)用;
  • 在里面執(zhí)行的運(yùn)算也是要遵循運(yùn)算符的優(yōu)先級;
<div id="app" class="my-app">{{'¥' + id * 2 }}</div>

結(jié)果為¥40

<div id="app" class="my-app">{{'¥' + id * 2 }}<span>{{styles}}</span></div>

var data = {
    styles:'color:orange',
    id:20
}

頁面渲染為: ¥40color:green

  • 如果我們想要color:green為大寫
<div id="app" class="my-app">{{'¥' + id * 2 }}<span>{{styles.toUpperCase()}}</span></div>

輸出為:¥40COLOR:GREEN

插值過濾器

語法{{ key | filter }}
VUE.JS的9289行為我們提供一些內(nèi)置的過濾器涡贱,我們可以直接對插值調(diào)用咏删,
比如我們要對數(shù)據(jù)id:40的值渲染變成美元$40

<div id="app" class="my-app">{{id | currency}}</div> 
var data = {
    styles:'color:orange',
    id:40
}
var demo = new Vue({
    el:'.my-app',
    data:data
})

頁面渲染為:$40.00

{{id * 3 | currency}}

頁面渲染為: $120.00

{{id | currency '¥'}} 可以使$符號轉(zhuǎn)換為人民幣¥符號

  • 過濾器提供了哪些方法?

    • json
    • capitalize
    • uppercase
    • lowercase
    • currency
    • pluralize
    • debounce
  • 大寫轉(zhuǎn)換:uppercase

<div id="app" class="my-app">{{id * 3 | currency}}
    <p>{{styles | uppercase}}</p>
</div> 

COLOR:GREEN

  • 小寫轉(zhuǎn)換:lowercase
<p>{{tips | lowercase}}</p>
var data = {
    styles:'color:orange',
    tips:'HEllo,WORLd!',
    id:40
}

hello,world!

  • 首字母大寫 capitalize
  • 渲染json格式 json

下面兩個可以先跳過问词,待學(xué)了更多知識(v-for,methods等)再回頭來學(xué)習(xí)

  • pluralize

功能: 如果只有一個參數(shù)督函,復(fù)數(shù)形式只是簡單地在末尾添加一個 “s”。如果有多個參數(shù)激挪,參數(shù)被當(dāng)作一個字符串?dāng)?shù)組侨核,對應(yīng)一個、兩個灌灾、三個…復(fù)數(shù)詞。如果值的個數(shù)多于參數(shù)的個數(shù)悲柱,多出的使用最后一個參數(shù)锋喜。
參數(shù):{String} single, [double, triple, ...

<div class="test">
{{message}}    {{message | pluralize 'item'}} <!--輸出: 1 item-->
    <ul v-for="item in lili">
        <li>
            {{item}}    {{item | pluralize 'item'}} <!--輸出: 1    item 2    items 3    items-->
        </li>
    </ul>
    <ul v-for="item in lili">
        <li>
            {{item}}    {{item | pluralize 'st' 'rd'}} <!--輸出: 1    st 2    rd 3    rd-->
        </li>
    </ul>
    <ul v-for="item in man">
        <li>
            {{item}}    {{item | pluralize 'item'}} <!--輸出: 1    item 2    items 3    items-->
        </li>
    </ul>
    <ul v-for="item in man">
        <li>
            {{item}}    {{item | pluralize 'st' 'rd'}} <!--輸出: 1    st 2    rd 3    rd-->
        </li>
    </ul>
</div>
<script type="text/javascript">
    var myVue = new Vue({
        el: ".test",
        data: {
            message: 1,
            lili: [1,2,3],
            man: {
                name1: 1,
                name2: 2,
                name3: 3
            }
        }
    })
</script>
  • debounce

(1)限制: 需在@里面使用
(2)參數(shù):{Number} [wait] - 默認(rèn)值: 300
(3)功能:包裝處理器,讓它延遲執(zhí)行 x ms豌鸡, 默認(rèn)延遲 300ms嘿般。包裝后的處理器在調(diào)用之后至少將延遲 x ms, 如果在延遲結(jié)束前再次調(diào)用涯冠,延遲時長重置為 x ms炉奴。

<div class="test">
    <button id="btn" @click="disappear | debounce 10000">點(diǎn)擊我,我將10秒后消失</button>
</div>
<script type="text/javascript">
    var myVue = new Vue({
        el: ".test",
        methods: {
            disappear: function () {
                document.getElementById("btn").style.display= "none";
            }
        }
    })
</script>

動態(tài)插值

  • 在插入的過程中,動態(tài)的對值進(jìn)行修改蛇更;
    語法:
    computed:{
        key:function(){
            return newKey
        }
    }

示例:

<div id="app" class="my-app">
    <p>{{result}}</p>
    <p>{{result | currency}}</p>
</div> 

var demo = new Vue({
    el:'.my-app',
    computed:{
        result:function(){
            return 40
        }
    }
})

頁面渲染為
40
$40.00

  • 我們來看看result這個函數(shù)內(nèi)的作用域是什么瞻赶,console.log(this)
var demo = new Vue({
    el:'.my-app',
    computed:{
        result:function(){
        console.log(this)
            return 40
        }
    }
})
  • this就是Vue實(shí)例化對象赛糟,在里面能找到result,值為40砸逊,function就是在實(shí)例化對象上執(zhí)行璧南,可以訪問Vue對象上的屬性;
  • 可以應(yīng)用表達(dá)式過濾器师逸;

來實(shí)現(xiàn)一個輸入框的值顯示的小例子:(非V-方法)

<div id="app">
    <input type="text" id="inp">
    <span>{{result}}</span>
</div>

<script src="vue.js"></script>

<script>
    var demo = new Vue({
        el:"#app",
        data:{
            value:0
        },
        computed:{
            result:function(){
                return this.value * 2
            }
        }
    })
    // 當(dāng)input輸入完之后獲取它的值司倚,更新demo的value屬性
    document.getElementById('inp').onkeyup = function(e){
        //獲取輸入框里面輸入的值
        var val = e.target.value;
        //賦值給demo下的value
        demo.value = val;
    }
</script>

此時在輸入框輸入數(shù)字就會在后面實(shí)時顯示結(jié)果

數(shù)據(jù)的雙向綁定

  • vue提供了v-model="",屬性值是與vue中綁定數(shù)據(jù)中的數(shù)據(jù);
  • 當(dāng)視圖中一些操作篓像,會修改到vue中的數(shù)據(jù)动知,同樣,vue的數(shù)據(jù)被修改時會映射到視圖中
<div id="app">
    <input type="text" id="inp" v-model="value">
    <span>{{result | currency}}</span>
</div>
<script src="vue.js"></script>

<script>
var demo = new Vue({
    el:"#app",
    data:{
        value:0
    },
    computed:{
        result:function(){
            return this.value
        }
    }
})
</script>

這樣我們也實(shí)現(xiàn)了上面一個例子中的雙向綁定员辩;

  • 以后我們會用到更多的v- 開頭的屬性盒粮;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市屈暗,隨后出現(xiàn)的幾起案子拆讯,更是在濱河造成了極大的恐慌,老刑警劉巖养叛,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件种呐,死亡現(xiàn)場離奇詭異,居然都是意外死亡弃甥,警方通過查閱死者的電腦和手機(jī)爽室,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淆攻,“玉大人阔墩,你說我怎么就攤上這事∑可海” “怎么了啸箫?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長伞芹。 經(jīng)常有香客問我忘苛,道長,這世上最難降的妖魔是什么唱较? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任扎唾,我火速辦了婚禮,結(jié)果婚禮上南缓,老公的妹妹穿的比我還像新娘胸遇。我一直安慰自己,他們只是感情好汉形,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布纸镊。 她就那樣靜靜地躺著倍阐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪薄腻。 梳的紋絲不亂的頭發(fā)上收捣,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機(jī)與錄音庵楷,去河邊找鬼罢艾。 笑死,一個胖子當(dāng)著我的面吹牛尽纽,可吹牛的內(nèi)容都是我干的咐蚯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼弄贿,長吁一口氣:“原來是場噩夢啊……” “哼春锋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起差凹,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤期奔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后危尿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呐萌,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年谊娇,在試婚紗的時候發(fā)現(xiàn)自己被綠了肺孤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡济欢,死狀恐怖赠堵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情法褥,我是刑警寧澤茫叭,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站半等,受9級特大地震影響揍愁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜酱鸭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望垛吗。 院中可真熱鬧凹髓,春花似錦、人聲如沸怯屉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赌躺,卻和暖如春狼牺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背礼患。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工是钥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缅叠。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓悄泥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肤粱。 傳聞我的和親對象是個殘疾皇子弹囚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容