後端學前端:Vue學習總結(二)

後端學前端:Vue學習總結(二)

Tags: Vue

四、雙向綁定

指令:v-model

作用:用在,和上,實現雙向綁定

官網:

表單輸入綁定 - Vue.js

注意:

v-model 會忽略所有表單元素的 value、checked、selected。 attribute 的初始值而總是將 Vue 實例的數據作爲數據來源。你應該通過 JavaScript 在組件的 data 選項中聲明初始值。

代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
    <div id="app">
<!--        單行文本演示-->
        <input v-model="singlemessage">
        <span>單行文本編輯的內容:{{singlemessage}}</span>
<!--        多行文本演示-->
        <textarea v-model="multimessage"></textarea>
        <span>多行文本編輯的內容:{{multimessage}}</span>
<!--        單個複選框,側重於選沒選-->
        <input type="checkbox"  v-model="checked">
        <span>{{checked}}</span>
<!--        多個複選框,側重選了誰-->
        <input type="checkbox" value="A" v-model="checkwho">
        <span>A</span>
        <input type="checkbox" value="B" v-model="checkwho">
        <span>B</span>
        <input type="checkbox" value="C" v-model="checkwho">
        <span>C</span>
        <span>選了誰:{{checkwho}}</span>
        <br>
<!--        單選框演示-->
        <input type="radio" value="A" v-model="radiocheck">
        <span>A</span>
        <input type="radio" value="B" v-model="radiocheck">
        <span>B</span>
        <span>選了誰{{radiocheck}}</span>
        <br>
<!--        下拉框演示-->
        <select v-model="selectcheck">
            <option>A</option>
            <option>B</option>
            <option>C</option>
        </select>
        <span>{{selectcheck}}</span>
    </div>

    <script>
        var vm = new Vue({
            el:"#app",
            data:{
                singlemessage:"Vue給的單行初始值",
                multimessage:"Vue給的多行初始值",
                checked:true,
                checkwho:[],
                radiocheck:'',
                selectcheck:''
            }
        })
    </script>
</body>
</html>

五、組件

組件是啥?

合法的自定義標籤

官網:

組件註冊 - Vue.js

Prop大小寫問題:

HTML 中的 attribute 名是大小寫不敏感的,所以瀏覽器會把所有大寫字符解釋爲小寫字符。這意味着當使用 DOM 中的模板時,大小寫不敏感。如果使用字符串模板,大小寫敏感。

官網說明:

Prop - Vue.js

代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
    <div id="app">
<!--        先遍歷,把遍歷到的值綁定給組件模板裏的值-->
<!--        注意:此處大小寫不敏感!!-->
        <lol v-for="item in message" v-bind:tovue="item"></lol>
    </div>
    <script>
        Vue.component('lol',{
            props:['tovue'],//聲明通過”什麼“來獲取值
            template:'<li>{{tovue}}</li>'//進行輸出
        })
        var vm = new Vue({
            el:'#app',
            data:{
                message:['Java','Python','C++']
            }
        })
    </script>
</body>
</html>

六、Axios

由於Vue只關注視圖層,所以我們需要一個工具來與外部通信,曾經官方有過“vue-resource”,但後來被棄用,並推薦了Axios。

前端猿就是通過這個來向我們後端猿寫的接口請求數據。

官網:

axios中文網|axios API 中文文檔

CDN導包:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
    <div id="app">
        <span>{{info.name}}</span>
        <br>
        <span>{{info.age}}</span>
    </div>
    <script>
        var vm = new Vue({
            el:'#app',
            data(){
                return {//與數據的格式必須相同
                    info:{
                        name:null,
                        age:null
                    }
                }
            },
            mounted(){
                axios.get('data.json').then(response=>(this.info = response.data))
            }
        })
    </script>

</body>
</html>

data.json

{
  "name": "lol",
  "age": 1234
}

七、計算屬性

這是啥?

簡單來說,就是“緩存”。第一次訪問時,通過調用函數,將屬性計算出來並展示,然後會將屬性儲存到內存中,再次訪問時,會直接從內存中取出屬性進行展示,節省資源。但是要注意,“緩存”、“緩存”,如果該屬性發生了變動,那麼需要重新調用函數進行計算,並儲存到內存中。

官網:

計算屬性和偵聽器 - Vue.js

代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
    <div id="app">
<!--        調用方法-->
        <span>{{computenow2()}}</span>
<!--        調用屬性-->
        <span>{{computenow}}</span>
    </div>

<script>
    var vm = new Vue({
        el:'#app',
        data:{
            message:"hello"
        },
        methods:{
            computenow2:function () {
                return Date.now();
            }
        },
        computed:{
            computenow:function () {
                this.message;//如果改變這個值,會重新計算
                return Date.now();
            }
        }
    })
</script>

</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章