国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Vue組件——子組件向父組件傳遞數據以及路由

CoorChice / 1706人閱讀

摘要:自定義事件我們知道,父組件使用傳遞數據給子組件。另外,父組件可以在使用子組件的地方直接用來監聽子組件觸發的事件。為了讓組件可以組合,我們需要一種方式來混合父組件的內容與子組件自己的模板。

自定義事件

我們知道,父組件使用 prop 傳遞數據給子組件。但子組件怎么跟父組件通信呢?這個時候 Vue 的自定義事件系統就派得上用場了。

使用 綁定自定義事件v-on

每個 Vue 實例都實現了事件接口,即:

使用 $on(eventName) 監聽事件

使用 $emit(eventName) 觸發事件

Vue 的事件系統與瀏覽器的 EventTarget API 有所不同。盡管它們的運行起來類似,但是 $on 和 $emit 并不是addEventListener 和 dispatchEvent 的別名。

另外,父組件可以在使用子組件的地方直接用 v-on 來監聽子組件觸發的事件。
不能用 $on 偵聽子組件釋放的事件,而必須在模板里直接用 v-on 綁定,參見下面的例子。

//定義子組件
var Child = {
//獲取data()中的數據,并添加一個點擊事件
    template: ``,
    data(){
        return {
            counter: 0
        }
    },
    methods:{
        addCounter(){
            this.counter++;
            //自定義事件$emit傳回根組件,同時調用根組件方法
            this.$emit("add-parent-total")
        }
    }
}
//根組件
var vm = new Vue({
    el: "#app",
    data:{
        total: 0
    },
    components: {
        Child
    },
    methods: {
//根組件中子組件改變根組件的方法
        addTotal(){
            this.total++
        }
    }
})

//html
使用插槽分發內容

注意兩點:

組件不知道它會收到什么內容。這是由使用 的父組件決定的。

組件很可能有它自己的模板。

為了讓組件可以組合,我們需要一種方式來混合父組件的內容與子組件自己的模板。這個過程被稱為內容分發 (即 Angular 用戶熟知的“transclusion”)。Vue.js 實現了一個內容分發 API,參照了當前 Web Components 規范草案,使用特殊的 元素作為原始內容的插槽。

//slot插槽使其可以在html中傳入數據,也可以在其中傳入默認內容
var Child = {
    template: `
1 默認內容
` } var vm = new Vue({ el: "#app", components: { Child } }) html hello

有名slot

    //slot插槽使其可以在html中傳入數據,也可以在其中傳入默認內容
var Child = {
    template: `
1 header 默認內容 footer
` } var vm = new Vue({ el: "#app", components: { Child } }) html
頭部內容
22222
底部內容
非父子組件

有時候,非父子關系的兩個組件之間也需要通信。在簡單的場景下,可以使用一個空的 Vue 實例作為事件總線:

    var bus = new Vue()
        var AppHead = {
        template: "
", methods: { add() { // 觸發組件A中的事件 bus.$emit("change", 1) } } } var AppBody = { template: "
{{ counter }}
", data() { return { counter: 0 } }, created() { //在組件B創建的鉤子中監聽事件 bus.$on("change", count => { this.counter += count }) } } var vm = new Vue ({ el: "#app", components: { AppHead, AppBody } })
模態框實例



  
  
  
  Document
  


  

注冊

登錄

vue路由

對于大多數單頁面應用,都推薦使用官方支持的 vue-router 庫。更多細節可以看 vue-router 文檔。

靜態路由

不需要復雜的路由

首先需要
npm i -S vue-router 安裝router庫
        var NewsComponent = { template: `
新聞
`} var ShopComponent = { template: `
商場
`} var NotFoundComponent = { template: `
404
`} var routes = [ { path: "/", redirect: "/news"http://默認根目錄跳轉 }, { path: "/news", component: NewsComponent }, { path: "/shop", component: ShopComponent }, { path: "*", component: NotFoundComponent } ] var router = new VueRouter({ routes }) // var app = new Vue({ // el: "#app", // router // }) var app = new Vue({ el: "#app", router })
動態路由
var Goods = {
      template: `
  • {{ good.goods_name }} {{ good.price }}
`, watch: { $route (to, from) { console.log(to.params.id); axios.get("http://h6.duchengjiu.top/shop/api_goods.php?cat_id="+to.params.id).then(res => { console.log(res.data.data) this.goods = res.data.data }) } }, data() { return { goods: [] } } } var router = new VueRouter({ routes: [ { path: "/cat/:id", component: Goods } ] }); var vm = new Vue({ el: "#app", router, data: { cats: [] }, created() { axios.get("http://h6.duchengjiu.top/shop/api_cat.php").then(res => { console.log(res) this.cats = res.data.data }) } });

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/51497.html

相關文章

  • vue學習筆記4

    摘要:主要當作屬性來使用方法表示一個具體的操作,主要書寫業務邏輯一個對象,鍵是需要觀察的表達式,值是對應回調函數。父組件向子組件傳值 組件實例定義方式,注意:一定要使用props屬性來定義父組件傳遞過來的數據 // 創建 Vue 實例,得到 ViewModel var vm = new Vue({ el: '#app', data: {...

    番茄西紅柿 評論0 收藏0
  • vue學習筆記3

    摘要:主要當作屬性來使用方法表示一個具體的操作,主要書寫業務邏輯一個對象,鍵是需要觀察的表達式,值是對應回調函數。Vue.js - Day3 定義Vue組件 什么是組件: 組件的出現,就是為了拆分Vue實例的代碼量的,能夠讓我們以不同的組件,來劃分不同的功能模塊,將來我們需要什么樣的功能,就可以去調用對應的組件即可; 組件化和模塊化的不同: 模塊化: 是從代碼邏輯的角度進行劃分的;方便代碼分層開...

    番茄西紅柿 評論0 收藏0
  • vue 模仿今日頭條demo

    vue 頭條 demo 寫在前面 總結一下寫 demo 過程中 遇到的一些問題,方便自己的學習總結!如有錯誤,還請指正! 一直想學習使用 vue ,并準備以后在實際項目使用,之前跟著慕課網 黃軼 老師 敲了一下 餓了么商品購買頁的demoele效果預覽 該 demo 借鑒自 hcy1996-github 這個項目,但內部內容,布局風格,完全不同,只為共同學習,共同交流 數據接口 直接打開 今日...

    simpleapples 評論0 收藏0
  • vue組件間通信六種方式(完整版)

    摘要:本文總結了組件間通信的幾種方式,如和,以通俗易懂的實例講述這其中的差別及使用場景,希望對小伙伴有些許幫助。狀態改變提交操作方法。 前言 組件是 vue.js最強大的功能之一,而組件實例的作用域是相互獨立的,這就意味著不同組件之間的數據無法相互引用。一般來說,組件可以有以下幾種關系:showImg(https://segmentfault.com/img/remote/146000001...

    frontoldman 評論0 收藏0
  • vue組件間通信六種方式(完整版)

    摘要:本文總結了組件間通信的幾種方式,如和,以通俗易懂的實例講述這其中的差別及使用場景,希望對小伙伴有些許幫助。狀態改變提交操作方法。前言 組件是 vue.js最強大的功能之一,而組件實例的作用域是相互獨立的,這就意味著不同組件之間的數據無法相互引用。一般來說,組件可以有以下幾種關系: showImg(https://user-gold-cdn.xitu.io/2019/5/17/16ac35bf...

    DDreach 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<