1. 程式人生 > >使用Vue開發網站之路2-多元件通訊2(利用Vuex進行資料傳遞)

使用Vue開發網站之路2-多元件通訊2(利用Vuex進行資料傳遞)

這裡還是非父子元件間的通訊

其實我也不喜歡看別人的大段程式碼,但這是最完整的,以後肯定有用(完整程式碼貼在最後面,自己看)

主要實現是使用vuex的公共空間存放資料,這個時候要問,那為什麼不之間用一個物件啊,其他也是可以的,但是vuex可以檢測你資料的變化,這個後期有用。

繼續,

主要實現是新建一個Vuex.Store,然後在mutations裡面編寫你要修改資料的方法。再在在要修改資料的元件裡使用store.commit("setName",value);,最好不要直接賦值,為了可以檢測你的資料變化,vue本來就資料驅動的框架。另一個元件想要獲取資料的話直接store.state.userName這麼一下就可以了。

題外話:(其實vuex我現在還用的不夠多,因為要實現的功能簡單。也就先用用,後面肯定會繼續深入的。其實有時候覺得會用一個框架真的沒什麼了不起的,真正厲害的是知道它為什麼這麼涉及,怎麼設計的,如果是我的話,用現有的知識能不能做出一樣的效果。就像java為什麼只有單繼承,大學裡老師可沒教,也就是後面看設計模式的時候才知道,哦,原來是為了實現組合。)

    //使用vuex在不關聯元件之間進行通訊
    const store = new Vuex.Store({
        state:{
            userName:""
        },
        mutations:{
            setName(state,name) {
                state.userName = name;
            }
        }
    })
    //密碼
    Vue.component("user-password",{
        props:["value"],
        template:'<div class="input_message">password:\
                <input v-bind:value="value" v-on:blur="savePassword($event.target.value)" v-on:input="updateValue($event.target)" v-on:click="targetClick" type="password" class="right_box" v-bind:placeholder="placeholder"></input>\
            </div>',
        data:function() {
            return {
                placeholder:ls.enterPassword
            }
        },
        methods:{
            targetClick:function(e) {
                var target = $(e.target);
                target.removeClass("is_empty");
            },
            updateValue:function(target) {
                this.$emit("input",target.value);
                var target = $(target);
                target.removeClass("is_empty");
            },
            savePassword:function(value) {
                store.commit("setName",value);
            }
        }
    });
    //再次密碼
    Vue.component("user-password-again",{
        props:["value"],
        template:'<div class="input_message">password:\
                <input v-bind:value="value" v-on:blur="checkPassword($event.target.value)" v-on:input="updateValue($event.target)" v-on:click="targetClick" type="password" class="right_box" v-bind:placeholder="placeholder"></input>\
                <span class="psResult" v-html="checkResult"></span>\
            </div>',
        data:function() {
            return {
                placeholder:ls.enterPasswordAgain,
                checkResult:""
            }
        },
        methods:{
            targetClick:function(e) {
                var target = $(e.target);
                target.removeClass("is_empty");
            },
            updateValue:function(target) {
                this.$emit("input",target.value);
                var target = $(target);
                target.removeClass("is_empty");
            },
            //失去焦點後檢驗兩個密碼是否相等
            checkPassword:function(value) {
                if(value == store.state.userName) {
                    this.checkResult = "兩次結果相同";
                }
            }
        }
    });

相關推薦

使用Vue開發網站2-元件通訊2利用Vuex進行資料傳遞

這裡還是非父子元件間的通訊 其實我也不喜歡看別人的大段程式碼,但這是最完整的,以後肯定有用(完整程式碼貼在最後面,自己看) 主要實現是使用vuex的公共空間存放資料,這個時候要問,那為什麼不之間用一個物件啊,其他也是可以的,但是vuex可以檢測你資料的變化,這個後期有用。

USB開裝置開發學習二: USB具體通訊過程含列舉過程

原文:https://blog.csdn.net/go_str/article/details/80802452  前言     現在剛開始接觸USB的開發,零零散散學習了一些USB基礎知識,但是卻得不到連貫。在這個學習過程中首先困惑的就是USB

php原始碼第七章第三節 PHP程式碼的加密解密

PHP語言作為指令碼語言的一種,由於不需要進行編譯,所以通常PHP程式的分發都是直接釋出原始碼。對於一些開源軟體來說,這並沒有什麼問題,因為它本來就希望有更多的人閱讀程式碼,希望有更多的人蔘與進來,而對於商業程式碼來說,這卻是一個不太好的訊息,不管是從商

後端一:搭建簡單伺服器SpringBoot+Gradle實現通用Mapper

注意:本文參考網上大神寫的一個Mybtais通用框架而實現的,框架地址:http://git.oschina.net/free/Mapper2/blob/master/wiki/mapper/4.Spring4.md 本文思路主要使用SpringBoot+Mybatis+G

Android利用EventBus進行資料傳遞

在專案中,不可避免的要在兩個頁面之間進行資料的傳遞,就算不傳遞,也需要進行重新整理之類的,我們根據Google提供的庫類方法,也是可以做的,主要有廣播broadcastreceiver,startactivity方法或者是application例項等等,都是可以工作的(只要

vue大師晉級第一集:Vue基礎】第2章——Vue 例項

建立一個 Vue 例項 每個 Vue 應用都是通過用 Vue 函式建立一個新的 Vue 例項開始的: var vm = new Vue({ // 選項 }) Vue 應用由一個通過 new Vue 建立的根 Vue 例項,以及可選的巢狀的、可複用的元件樹組成。

專案實戰vue爬坑vue框架中如何註冊全域性公共過濾器filter、全域性公共外掛、全域性公共元件component

專案需求: 在我們的實際專案的開發中,經常會遇到一些可以重複利用的方法和元件,比如:我們在一個專案中可能會經常用到格式化時間的方法。這個時候就需要我們把這個方法封裝起來,註冊成一個全域性的過濾器,在整個專案中都可以使用,這樣既可以提高程式碼的使用效率,也便於我們

vue大師晉級第二集:深入瞭解元件】第3章——自定義事件

事件名 不同於元件和 prop,事件名不存在任何自動化的大小寫轉換。而是觸發的事件名需要完全匹配監聽這個事件所用的名稱。舉個例子,如果觸發一個 camelCase 名字的事件: this.$emit('myEvent') 則監聽這個名字的 kebab-case

vue大師晉級第二集:深入瞭解元件】第4章——插槽

插槽內容 Vue 實現了一套內容分發的 API,這套 API 基於當前的 Web Components 規範草案,將 < slot> 元素作為承載分發內容的出口。 它允許你像這樣合成元件: <navigation-link url="/prof

vue大師晉級第二集:深入瞭解元件】第5章——動態元件 & 非同步元件

在動態元件上使用 keep-alive 我們之前曾經在一個多標籤的介面中使用 is 特性來切換不同的元件: <component v-bind:is="currentTabComponent"></component> 當在這些元件之間

Vue 爬坑—— 元件之間的資料傳遞

Vue 的元件作用域都是孤立的,不允許在子元件的模板內直接引用父元件的資料。必須使用特定的方法才能實現元件之間的資料傳遞。 首先用 vue-cli 建立一個專案,其中 App.vue 是父元件,components 資料夾下都是子元件。 一、父元件向子元件傳遞資料

偏前端-vue.js學習初級元件化構建

vue.js   元件化構建 元件系統是 Vue 的另一個重要概念,因為它是一種抽象,允許我們使用小型、自包含和通常可複用的元件構建大型應用。仔細想想,幾乎任意型別的應用介面都可以抽象為一個元件樹:   一、使用元件 1.元件的全域性註冊--可以使用 Vue.compon

iOS開發NSLocalizedString,個本地化語言Xcode9.2

一、系統中巨集定義的NSLocalizedString,如圖: 第一個引數key是從Localizable.strings這個檔案中讀取對應的key-value值。 第二個引數comment可以是nil,可以是一段為空的字串,也可以是對key的註釋。 二、NSLoc

Python第二天,基礎2-基本數據類型

cheng python ech odi lun ron zid ast aof %E5%BE%AE%E4%BF%A1%E5%85%AC%E5%85%B1%E5%8F%B7%E7%9A%84PHP%E5%BC%80%E5%8F%91%E5%9F%BA%E7%A1%80%E7

Android開發學習--異步消息Handler,Message,Looper和AsyncTask初體驗

被調用 project 輸入 gettext npos article app sso 音樂播放 在簡易音樂播放器中。用了Handler。也沒有過多地去研究學習,這裏再學習下android下的異步消息處理機制。這裏用了Handler主要是在線程中不能更新UI

Android開發學習--圖表實現(achartengine/MPAndroidChart)初體驗

bundle 喜歡 嵌入式linux Y軸 tid ren sca ref java代碼 ??已經有一段時間沒有更新博客了,在上周離開工作了4年的公司,從此不再安安穩穩地工作了。很多其它的是接受挑戰和實現自身價值的提高。離開了嵌入式linux,從此擁抱移

[js高手]深入淺出webpack教程系列2-配置文件webpack.config.js詳解

基本用法 tle webpack 函數 ges 配置 ref 高手之路 pack 接著上文,重新在webpack文件夾下面新建一個項目文件夾demo2,然後用npm init --yes初始化項目的package.json配置文件,然後安裝webpack( npm inst

翻譯——T-SQL的進階:超過基礎的2級水平:寫子查詢

相關 完整 圖像 reg 想要 試驗 releases 驗證 不用 T-SQL的進階之路:超過基礎的2級水平:寫子查詢 格雷戈裏·拉森(Gregory Larsen),2016/01/01(第一次出版:2014/01/29) 該系列 這篇文章是樓梯系列的

Vue 爬坑—— 使用 vue-cli 搭建項目 增補

web http class 模板 clas ebp 搭建 com png cd 指定好安裝目錄 vue init webpack 項目名稱 執行 vue vue list 查看可應用模板 vue init webpack +名字

編程態和綁定與非綁定方法

SM 可執行文件 bst sql 走起 view ont 們的 self 多態 多態是指一類事物有多種形態 動物有多種形態:人、狗、豬 import abc class Animal(metaclass=abc.ABCMeta): #同一類事物:動物 @abc