滿鄰私房菜-小程序之開篇

1.模版方法使用

這是一個模版方法,使用<wxs>封裝

<wxs module=“timeHelper” lang=“babel”>
    const getStoreHour = ( t1,t2) => {
      let date1 = getDate(t1);
      let date2 = getDate(t2);
      return `${date1.getHours()}- ${date2.getHours()}`;
    }
    module.exports.getStoreHour = getStoreHour;
</wxs>

可以聲明一個方法,這個方法可以在直接在模版<template>中使用,使用方法是“模塊名.方法”。

適用于要對服務(wù)器傳回的數(shù)據(jù)進(jìn)行加工處理的术奖,比如服務(wù)器傳回

meal: {
  provideFromTime: new Date(0312312),
  provideTillTime: new Date(1230123)
}

需要在模板中顯示meal的供應(yīng)時(shí)間

<template>
<h4>
{{timeHelper.getStoreHour(meal.provideFromTime, meal.provideTillTime)}}
</h4>
</template>

2. Mixin

可用于抽離頁面公共方法和屬性,起到了簡化頁面的和封裝代碼的作用轻绞。Mixin本身是個包含data, methods和created的全局對象采记。

Mixin使用方法

//page.js
//首先聲明并注入“混入toggleMixin”
import toggleMixin from '../mixins/toggle'
 wepy.page({
    mixins: [toggleMixin]
})

//toggle.js
//toggle就是“混入”
//包含一個屬性isShowing
//和一個方法toggleShow()
export default {
    data: {
        mixin: 'ToggleMixin',
        isShowing: false
    },
    methods : {
        toggleShow(){
            this.isShowing = !this.isShowing;
        }
    }
}

//page.js
//使用混入的方法就是直接在模板里使用
<template>
    <button @click="toggleShow"></button>
    <tooltip v-if="isShowing" class="tooltip">
        <p>I am a title in tooltip</p>
    </tooltip>
</template>

3.Store

Store是Vuex的一個核心概念,是存儲Model的一個全局單例政勃,包括state(數(shù)據(jù)),mutations(封裝寫數(shù)據(jù)的方法),getters(封裝獲取數(shù)據(jù)的方法)和actions(調(diào)用mutations的方法唧龄,可以異步,一般用于實(shí)現(xiàn)業(yè)務(wù)), module(分離Store奸远,適合于每個子Store都有自己的邏輯和數(shù)據(jù)的情況既棺,如DishList和Cart)

舉例:現(xiàn)在頁面是一個菜單頁,包含一個由菜式(Dish)組成的列表懒叛,用戶可以添加菜式到購物車和checkout丸冕。

如何實(shí)現(xiàn)這個Store呢?

import Vuex from ‘@wepy/x’;

//總的Store分為兩個子模塊(submodule)薛窥,一個是菜式列表(用于存儲在菜單里的菜式)胖烛,一個是購物車列表(用于存儲購物車?yán)锏牟耸剑?export default new Vuex.Store({
    modules: {
        dishList : DishList,
        cart: Cart
    },
    getters: {
        getDishById( state, id ){
            return state.getters.getDishById(id)
        }
    }
});

//菜單列表Store,包括數(shù)據(jù)菜單列表和方法添加新菜式
export default new Vuex.Store({
    state: {
        dishes : [{
            id: “0001”,
            title: “韭菜盒子”,
            price: 9.98,
            desc: “山東媽媽的韭菜盒子”,
            photos: [“1.jpg”,”2.jpg”],
            preferences : {
                “口味” : [“正匙缑裕”,”重口味"]
            }
        },{
            id: “0002”,
            title: “豆乳盒子”,
            price: 18.98,
            desc: “John的甜品屋招牌”,
            photos: [“1.jpg”,”2.jpg”],
            preferences : {
                “口味” : [“奶油”,”草莓"]
            }] 
    },
    mutations: {
        addDishesToList (state, newDishes) {
            state.dishes.push(newDishes);
        }
    },
    getters: {
        getDishesList (state) {
            return state.dishes;
        },
        getDishById (id){
            return state.dishes.filter( d => d.id === id)[0];
        }
    },
    actions: {
        getMoreDishes (context) {
            let newDishes = await getNewDishes();
            context.commit(“addDishesToList”, newDishes);
        }
    }
});


//Cart佩番,購物車列表Store,包括購物車菜單列表和方法添加進(jìn)購物車罢杉,清空購物車和結(jié)賬
export default new Vuex.Store({
    state: {
        dishes : [] 
    },
    mutations: {
        addDishToCart (state, dish) {
            state.dishes.push(dish)
        },
        removeDishFromCart (state, dishId){
            state.dishes.remove(dishId)
        },
        clearCart ( state) {
            states.dishes = []
        }
    },
    getters: {
        getCart (state) {
            return state.dishes;
        }
    },
    actions: {
        addDishToCart ( { dispatch, commit, getters, rootGetters}, dishId ) {
            let dish = rootGetters.getDishById(dishId)
            commit(‘a(chǎn)ddDishesToCart’, dish)
        },
        removeDishFromCart  ( { dispatch, commit, getters, rootGetters}, dishId ) {
            commit(‘removeDishFromCart’, dishId)
        },
        checkout ( { dispatch, commit, state }){
            const dishesInCart = […state.dishes]
            commit(“clearCart”)
           shop.buy(
                dishesInCart,
                () => commit(“checkoutSuccess"), 
                () => commit("checkoutFailure")
            )
        }
    }
});
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末趟畏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子滩租,更是在濱河造成了極大的恐慌赋秀,老刑警劉巖利朵,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沃琅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蜘欲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門益眉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姥份,你說我怎么就攤上這事郭脂。” “怎么了澈歉?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵展鸡,是天一觀的道長。 經(jīng)常有香客問我埃难,道長莹弊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任涡尘,我火速辦了婚禮忍弛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘考抄。我一直安慰自己细疚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布川梅。 她就那樣靜靜地躺著疯兼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贫途。 梳的紋絲不亂的頭發(fā)上吧彪,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天,我揣著相機(jī)與錄音丢早,去河邊找鬼来氧。 笑死,一個胖子當(dāng)著我的面吹牛香拉,可吹牛的內(nèi)容都是我干的啦扬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼凫碌,長吁一口氣:“原來是場噩夢啊……” “哼扑毡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盛险,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瞄摊,失蹤者是張志新(化名)和其女友劉穎勋又,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體换帜,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡楔壤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惯驼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蹲嚣。...
    茶點(diǎn)故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖祟牲,靈堂內(nèi)的尸體忽然破棺而出隙畜,到底是詐尸還是另有隱情,我是刑警寧澤说贝,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布议惰,位于F島的核電站,受9級特大地震影響乡恕,放射性物質(zhì)發(fā)生泄漏言询。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一傲宜、第九天 我趴在偏房一處隱蔽的房頂上張望倍试。 院中可真熱鬧,春花似錦蛋哭、人聲如沸县习。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躁愿。三九已至,卻和暖如春沪蓬,著一層夾襖步出監(jiān)牢的瞬間彤钟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工跷叉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逸雹,地道東北人。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓云挟,卻偏偏與公主長得像梆砸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子园欣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容