Vue之組件及組件通信

来源:https://www.cnblogs.com/ViavaCos/archive/2019/10/21/11712131.html
-Advertisement-
Play Games

組件之全局組件 //註意:需要在Vue實例化之前註冊全局組件,使用Vue.component("組件名",{ template: }) Vue.component("show name",{ template:` ViavaCos ` }) var vm = new Vue({ el:' app', ...


組件之全局組件

//註意:需要在Vue實例化之前註冊全局組件,使用Vue.component("組件名",{ template:`組件模板` })
Vue.component("show-name",{
    template:`
    <div title="註意, 組件模板的根元素必須有且只有一個">
    <p>ViavaCos</p>
    </div>
    `
})

var vm = new Vue({
    el:'#app',
    data:{
        name:'ViavaCos'
    },
    methods:{}
})

組件之局部組件

// 套路和全局組件一樣,這兩者只是註冊的位置不同,作用的範圍也不一樣罷了 使用components選項來註冊局部
var vm = new Vue({
    el:'#app',
    data:{},
    components:{
        'show-name':{
            template:`
            <div title="註意, 組件模板的根元素必須有且只有一個">
                <p>ViavaCos</p>
            </div>
        `
        }
    }
})

組件通信之父組件傳遞值給子組件

// 父組件傳遞值給子組件通過自定義屬性傳遞,然後子組件通過porps選項來接收所傳遞過來的值

一共三個步驟:

  1. 在子組件的自定義標簽上設置自定義屬性,值為父組件需要從傳遞的值(變數)
  2. 在子組件的實例上設置一個叫props的屬性,用來接收父組件傳遞過來的值,props選項是一個字元串數組
  3. 由於props選項也被vue實例代理了,所以直接在當前子組件實例中使用this.自定義屬性名就可使用了

     <div id="app">
         // 1. 設置自定義屬性
         <show-city :city="city"></show-city>
     </div>
     <script src="./vue.js"></script>
     <script>
         var vm = new Vue({
             el: '#app',
             data: {
                 city: ["北京", "上海", "天津"]
             },
             methods: {},
             components: {
                 'show-city': {
                     // 3.使用
                     template: `
                     <div>
                         <p v-for="item in city">{{item}}</p>
                     </div>
                     `,
                     // 2.接收值
                     props: ['city']
                 }
             }
         });
     </script>

組件通信之子組件傳遞給父組件

一共五個步驟:

  1. 在子組件的組件模板上設置一個點擊事件,用來觸發自定義事件用於傳值
  2. 在子組件的methods中設置點擊事件的事件處理程式:內容為執行自定義事件this.$emit("自定義事件名", 若幹個參數)
  3. 在父組件管理的視圖,也就是書寫子組件的自定義標簽的地方,在這個標簽上設置自定義事件的監聽(用v-on指令就行)
  4. 提前在父組件的數據對象data中定義一個容器來接收子組件傳遞過來的值
  5. 在父組件的methods中設置監聽自定義事件的事件處理程式:由於事件觸發了,會有寫好的若幹個參數傳遞過來,所以在這裡處理一下。將傳遞來的值用方纔定義好的容器接收,然後就可以放心使用這個子組件傳遞來的值了

      <div id="app">
             <!-- 3. 監聽事件 -->
             <show-city @getcity='exeCity' v-for="item in city" :city="item" :tcity="tcity"></show-city>
         </div>
    
    
     <script src="./vue.js"></script>
     <script>
         var vm = new Vue({
             el: '#app',
             data: {
                 city: ["北京", "上海", "天津"],
                 // 4. 定義容器接收
                 tcity: ''
             },
             methods: {
                 // 5. 賦值給tcity這個容器
                 exeCity(data) {
                     this.tcity = data;
                 }
             },
             components: {
                 'show-city': {
                     // 1. 設置自定義事件
                     template: `
                     <div>
                         <p @click="toFather" :class="{select:isSelect}" >{{city}}</p>
                         <input text="text" v-model="isSelect">
                     </div>
                     `,
                     props: ['city', 'tcity'],
                     methods: {
                         toFather() {
                             // 2. 觸發自定義事件
                             console.log('被點擊了')
                             this.$emit('getcity', this.city);
                         },
                     },
                     computed: {
                         isSelect() {
                             return this.city === this.tcity;
                         }
                     }
                 }
    
             }
         });
     </script>

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用對象屬性來調用事件處理程式,方式一 運行結果: 使用對象屬性來調用事件處理程式,方式二 運行結果: 事件處理綜合示例 運行結果: ...
  • 如今web開發中,無限載入是必需的一項功能,尤其是在移動端開發中,一個列表往往預設只載入10條,想看更多只能逐漸往下翻頁。那麼今天就看看如何在Vue-Cli中實現這個功能。 當前找到兩個插件 1 element-ui的infiniteScroll無限滾動(適合vue2,vue3) infiniteS ...
  • 1. 對象的定義 註意: 原型鏈中聲明屬性將會多個實例共用,而構造函數不會 對象的繼承 1. 對象的繼承 之 對象冒充繼承 註意: 對象冒充繼承的方法 只能 繼承對象的構造函數的屬性和方法,不能 繼承原型鏈中的函數和方法 2. 對象的繼承 之 原型鏈繼承 註意:原型鏈繼承的方法 可以 繼承對象的構造 ...
  • 本文導讀 HTML中的元素可分為兩種類型:塊級元素和行級元素。這些元素的類型是通過文檔類型定義(DTD)來指明。塊級元素:顯示在一塊內,會自動換行,元素會從上到下垂直排列,各自占一行,如p,ul,form,div等標簽元素。行內元素:元素在一行內水平排列,高度由元素的內容決定,height屬性不起作 ...
  • 方法解釋: 通過wx.previewImage預覽圖片時,會出現格式為png預覽背景為黑色時,圖片查看不清楚,能過下麵的方法轉化為白色底,方便查看 1、先用wx.getImageInfo 下載圖片到本地,並且獲取圖片的信息; 2、將圖片畫入canvas,並生成臨時圖片地址; 3、將canvas生成的 ...
  • 主要特性 使用 開發小程式,你將在小程式技術體系的基礎上獲取到這樣一些能力: 徹底的組件化開發能力:提高代碼復用性 完整的 開發體驗 方便的 數據管理方案:方便構建複雜應用 快捷的 構建機制:自定義構建策略、開發階段 hotReload 支持使用 npm 外部依賴 使用 命令行工具 vue cli ...
  • table屬性中,設置 :default-sort="{prop:'time', order:'descending'}" 1. prop為排序列,order為排列順序 2. 多級對象屬性,寫法如 :default-sort="{prop:'baseInfo.time', order:'descen ...
  • 使用vue init webpack 你的項目名稱初始化一個vue的項目 安裝依賴 npm install vue-resource http-proxy-middleware vuex koa 在項目的main.js中引入並註冊下載的依賴 在main.js中引入vue-resource並註冊到vu ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...