本文來自於自己的經驗總結,並不一定是最好的,或最規範的。如果你有任何建議十分歡迎提出
非父子元件間的通訊
- 在src中建立一個eventbus.js作為eventbus的中轉站
- 使用emit與on來在不同元件中監聽事件
import Vue from `vue`
export default new Vue();
//建立eventBus中轉站
import EVENTBUS from `@/eventBus`
//在需要用到的元件中匯入eventbus
updateList(){
EVENTBUS.$emit(`updateList`, 1)
}
//註冊事件,並傳遞引數
activeGetSpliter() {
EVENTBUS.$on(`activeGetSpliter`, reg => {
this.isLoading = true;
this.isActive = false;
this.getSpliter(reg);
});
},
//監聽事件,處理引數
在Vue中操作DOM
其實如果使用了VUE,個人認為不與DOM打交道是最好的:)
@click=`changeSpliter(spliterIndex, $event)`
//在函式中傳遞一個叫$event的引數
var spliterDOM = $event.target.parentNode.previousElementSibling.childNodes[0];
//如此便可以獲取DOM
console.log($event.target)
//可以如此來觀察所選取的是何元素
v-for巢狀迴圈
想象下列場景,從後端得到的json物件裡有一backUp陣列,陣列由數個物件組成,每個物件裡包含一個字串型別的spliter_id,和一個brand_arr的陣列。brand_arr陣列中有數個物件,每個物件包brand_id和一些其他的brand基本資訊。現在要將數個spliter_id展示,且在其下方展示其包含的brand_id。
<div>
<div
v-for=`(spliter, spliterIndex) in backUp`
:key=`spliterIndex`
><!--單個spliter-->
{{ spliter.spliter_id}}
</div>
<div
v-for=`(brand, brandIndex) in spliter.brand_arr`
:key=`brandIndex`
><!--單個brand-->
{{ brand.brand_id }}
</div>
</div>
注意兩個v-for中的引數使用。使用合適的引數可以很快捷的完成迴圈巢狀,來展示包含多個層級關係的資料
vue開發環境跨域代理配置
在config/index.js中寫入以下內容
moudle.exports = {
dev: {
assetsSubDirectory: `static`,
assetsPublicPath: `/`,
proxyTable: {
`/GetSpliterAndBrandBySite`: {
target: `https://wpc-product.earth.xpas.dell.com`,
changeOrigin: true,
secure: false,
pathRewrite: {
`^/GetSpliterAndBrandBySite`: `/GetSpliterAndBrandBySite`
}
},
},
}
}
接下來,如果想使用GetSpliterAndBrandBySite這個api,只需在請求中寫入
var url = `/GetSpliterAndBrandBySite`;
就行了。