export { default as Banner } from './Banner/index.vue';
export { default as BreadCrumb } from './BreadCrumb/index.vue';
export { default as CreateMetting } from './CreateMetting/index.vue';
export { default as CrumbNav } from './CrumbNav/index.vue';
export { default as Footer } from './Footer/index.vue';
export { default as Layout } from './Layout/index.vue';
export { default as NavBox } from './NavBox/index.vue';
export { default as SvgIcon } from './SvgIcon/index.vue';
tab 切换
Invalid default value for prop xx: Props with type Object/Array
组件之间传递数组
异步跨组件监听值
vue修改对象属性值视图上没有更新
vue 封装引入多个组件
计算属性传递参数
可以返回 一个函数
es6 解构函数
在父组件监听子组件的生命周期方法
如果你在父组件里想在子组件的mounted方法里边做一些事情
vue 中使用双向数据流
vue父子通讯是单向数据流,也就是子组件不能修改父组件的值,但是在很多情况下是需要修改的,比如在做功能编辑的时候,子组件需要带入父组件的原始值,而且子组件也需要修改这个值,到最后的保存值在父组件中。
列表进入详情页的传参问题
// params通过name切换路由 this.$route.params.id | /detail/123
proxyTable: { // 用‘/api’开头,代理所有请求到目标服务器, 以 api 代替 target 的接口域名 '/api': { target: 'http://jsonplaceholder.typicode.com', // 接口域名 changeOrigin: true, // 是否启用跨域 pathRewrite: { // '^/api': '' } } }
libraryDirectory {
}
在main.js中按需加载你需要的插件: // 按需引入vant组件 import { DatetimePicker, Button, List } from 'vant';
// 使用vant组件 Vue.use(DatetimePicker) .use(Button) .use(List);
// 最后在在页面中使用:
.van-tabs /deep/ .van-ellipsis { color: blue};
.van-tabs >>> .van-ellipsis { color: blue};
// 通过$once来监听定时器,在beforeDestroy钩子可以被清除。 this.$once('hook:beforeDestroy', () => { clearInterval(timer); })
(function(c, d) { var e = document.documentElement || document.body, a = "orientationchange" in window ? "orientationchange" : "resize", b = function() { var f = e.clientWidth; e.style.fontSize = f >= 750 ? "100px" : 100 * (f / 750) + "px"; }; b(); c.addEventListener(a, b, false); })(window);
安装 cnpm install vue-awesome-swiper --save 在组件中使用的方法,全局使用意义不大 // 引入组件 import 'swiper/dist/css/swiper.css' import { swiper, swiperSlide } from 'vue-awesome-swiper'
// 在components中注册组件 components: { swiper, swiperSlide }
// template中使用轮播 // ref是当前轮播 // callback是回调 // 更多参数用法,请参考文档 <swiper :options="swiperOption" ref="mySwiper" @someSwiperEvent="callback">
// 参数要写在data中 data() { return { // swiper轮播的参数 swiperOption: { // 滚动条 scrollbar: { el: '.swiper-scrollbar', }, // 上一张,下一张 navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', }, // 其他参数………… } } },
cnpm install fastclick -S import FastClick from 'fastclick'; // 引入插件 FastClick.attach(document.body); // 使用 fastclick
... { path: '/shipin', component: Layout, redirect: '/shipin/my', children: [ { path: 'my', name: 'my', component: () => import('@/pages/shipin/my'), meta: { title: '我的会议', headerTemplate: 1 } }, { path: 'control-meeting', name: 'control-meeting', component: (resolve) => require(['@/pages/shipin/control-meeting.vue'], resolve), // component: () => import('@/pages/shipin/control-meeting.vue'), meta: { title: '会议控制', headerTemplate: 1 } } ] },
http://momentjs.cn/docs/#/displaying/
import moment from 'moment' Vue.prototype.$moment = moment moment.locale('zh-cn')
组件中使用 import moment from "moment"; filters: { filterCalendar(calendar) { return moment(calendar).format('YYYY MMM Do dddd') }, filterTimes(times) { return moment(times).format('hh:mm') } },