摘要:業務背景是,在的前端項目中加入作為組件。但隨著需要登錄的頁面的增多,多個頁面都需要添加相同的,,以及前端登錄邏輯,所以在原先的項目中添加了,將重復的添加的代碼加入到了文件中,然后通過方法將對象掛載到某個的節點上。
業務背景是,在jq的前端項目中加入Vue作為組件。
原本的登錄功能是每個頁面加一個登錄彈窗(手機號+驗證碼驗證登錄),然后發ajax請求到后端,登錄成功后再進行一些操作。
但隨著需要登錄的頁面的增多,多個頁面都需要添加相同的html,js,css以及前端登錄邏輯,所以在原先的項目中添加了vue,將重復的添加的代碼加入到了vue文件中,然后通過$mount方法將vue對象掛載到某個ID的dom節點上。這樣,就讓所有的頁面調用統一的登錄彈窗,執行相同的js登錄代碼了,并且將登錄邏輯完全與頁面上的業務邏輯解耦了。
但后來需求又有了新的變化,原本loginForm 組件只是一個用來登錄的彈窗,但有一個頁面PM同學卻希望不用執行驗證登錄邏輯,只要輸入手機號,就可以直接直接執行后端邏輯。
好吧。。。
我找了 Vue.set 方法解決了這個問題:
通過Vue.set方法向vue對象中的data設置一個響應式對象,使該對象能夠在初始化階段接收控制參數 Vue.set(form.$data, "setData", data);
在不同的頁面向頁面傳輸不同的參數來控制彈窗顯示,以及后續是否執行ajax請求邏輯。
調用登錄組件的js
var callBack = function () {//加入callback方法作為回調函數,將業務代碼與登錄邏輯解耦 ... } var LoginComponent = require("loginForm.js");//獲得登錄組件 var setData = { "hideLogin": true, "callBack": callBack };//自定義數據 LoginComponent.loadLoginForm(setData);//初始化登錄組件
loginForm.js
var Vue = require("vue"); var loginForm=require("loginForm.vue"); //引入一個附帶模板的vue文件 var login = exports; var form; /** * 初始化登錄組件 */ login.loadLoginForm = function (data) { if(form){ return; } form = newVue(loginForm); //new一個vue對象 if (typeof(data) !== "undefined") { //通過Vue.set方法對要顯示的對象進行控制,使該對象能夠在初始化階段接收控制參數 Vue.set(form.$data, "setData", data);//向vue對象中的data設置一個響應式對象,繞過了限制 } form.$mount("#loginForm");//將對象綁定掛載到某個id上 };
html
loginForm.vue
/** 登錄彈窗 **/...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28412.html
摘要:哪吒別人的看法都是狗屁,你是誰只有你自己說了才算,這是爹教我的道理。哪吒去他個鳥命我命由我,不由天是魔是仙,我自己決定哪吒白白搭上一條人命,你傻不傻敖丙不傻誰和你做朋友太乙真人人是否能夠改變命運,我不曉得。我只曉得,不認命是哪吒的命。 showImg(https://segmentfault.com/img/bVbwiGL?w=900&h=378); 出處 查看github最新的Vue...
摘要:并總結經典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關注微信小程序的開發和面試問題,由基礎到困難循序漸進,適合面試和開發小程序。并總結vue React html css js 經典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
閱讀 3523·2021-10-08 10:04
閱讀 870·2019-08-30 15:54
閱讀 2187·2019-08-29 16:09
閱讀 1353·2019-08-29 15:41
閱讀 2280·2019-08-29 11:01
閱讀 1741·2019-08-26 13:51
閱讀 1031·2019-08-26 13:25
閱讀 1817·2019-08-26 13:24