Vue-store

使用store模式

用store模式写一个周记,图示如下:
周记

实现编辑删除,添加等功能,点击某天,下面添加处Day of event:显示的为对应星期。

使用store就是把数据(这里是假数据)托管到store的js文件上,各个组件中修改,删除等操作,不直接对数据进行操作。而是通知store去操作,所有方法写在store 文件中,在操作时调用即可。在项目简单时使用store模式即可,在项目较为复杂时可以使用vuex。

下面为store文件的代码:

import {seedData} from './seed.js'
//状态管理,页面中有任何改变或查询时,都通知store进行改变,而不在页面进行改变
export const store = {
    // 托管数据
    state:{
        seedData
    },   
    // 获取激活状态的天数
    getActiveDay(){
        return this.state.seedData.find(day => day.active)
    },
    // 点击哪天,把哪天设置为激活状态
    setActiveDay(dayID){
        this.state.seedData.map(function(day){
            day.id == dayID ? day.active = true :day.active = false
        });
    },
    // 为激活状态天数添加事件
    addEvent(message){
        if(message) {
            this.getActiveDay().events.push({ details: message, edit: false })
        }  
    },
    // 封装获取指定天数,指定事件,及事件索引
    getEventDetails(dayId, details){
        const dayObj = this.state.seedData.find(day => day.id == dayId );
        var resObj = {
            dayObj
        }
        dayObj.events.forEach(function(event,index){
            if(event.details == details) {
                resObj.event = event
                resObj.index = index
            }    
        })
        return resObj;
    },
    // 点击编辑,将事件处于编辑状态
    editEvent(dayId, eventDetails){
        // 将其他编辑状态都变为false
        this.state.seedData.map(function (obj) {
            obj.events.map(event => event.edit = false)
        })
        this.getEventDetails(dayId, eventDetails).event.edit = true;
    },
    // 删除指定事件
    deleteEvent(dayID, eventDetails){
        let delObj = this.getEventDetails(dayID, eventDetails)
        if (delObj.index >= 0){
            delObj.dayObj.events.splice(delObj.index,1)
        }
    },
    // 修改指定事件
    changeEvent(dayId, oldEventDetails, newDetails){
        // 如果新数据为空,则不修改,把旧数据赋值给新数据
        if (newDetails == '') newDetails = oldEventDetails
        const changeEvents = this.getEventDetails(dayId, oldEventDetails).event
        changeEvents.details = newDetails
        changeEvents.edit = false
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值