算法
1.计算一个数最靠近下一个被10或100整除的数,常用于显示折线图y轴数值
// 70
Math.ceil(67/10)*10
// 100
Math.ceil(23/00)*100
Vuex
1.vuex的action默认返回的就是Promise,并且resolve,不需要自己return new Promise就可以使用then接收,如果想要catch,Promise.reject()即可
/* 删除一个tab */
RemoveTab({ commit }, tab) {
// tabs只有一个时不能删除/
if (tab.path === '/' && state.menuTabs.length <= 1) {
return Promise.reject('tabs只有一个时不能删除/')
}
commit('REMOVE_TAB', tab)
}
2.遍历state.myArray.splice(index, 1),并不会清空myArray,因为有延迟,要使用赋值
/* 这样并不会得到想要的结果,因为有延迟 */
for (let [index, item] of state.myArray.entries()) {
if (!item.checked) {
state.myArray.splice(index, 1)
}
}
/* 你要这样 */
state.myArray = state.myArray.filter(item => item.checked)
/* 关闭所有,关闭其他tabs */
SET_CLOSE_TABS(state, type) {
if (type === 'all') {
state.menuTabs = [{ path: '/', label: 'Dashboard', icon: 'iconfont icon-dashboard' }]
state.cachedViews = []
}
if (type === 'others') {
state.menuTabs = state.menuTabs.filter(item => item.path == state.currentTab.path)
state.cachedViews = [state.currentTab.path]
}
}
Route在组件内的钩子
// vue方法
methods: {},
// 销毁时
destroyed() {
this.$store.dispatch('SetOpenJobType', { openType: true })
this.$store.dispatch('SetTaskCurrentTab', { id: '' })
this.$store.dispatch('ClearTask')
},
// 离开路由时,调用
beforeRouteLeave(from, to, next) {
this.$confirm('确定退出工作台吗?').then(() => {
next()
}).catch(() => {
})
},
beforeRouteEnter(frome, to, next) {
// 准备进入路由
},
beforeRouteUpdate(from, to, next) {
//在当前路由改变,但是该组件被复用时调用
}
网友评论