6 回答
TA贡献1780条经验 获得超5个赞
TA贡献1725条经验 获得超7个赞
看了下报错信息,应该是this的取值不对。 看看有没有在选项中(钩子函数
or data
or watch
or computed
)用了箭头函数。没有具体的代码只能想到这个了。
试了一下,在filters
中this不是vue实例。建议通过computed
属性来实现你的需求。
搜了下相关信息:尤大原话:
This is intentional in 2.x. Filters should be pure functions and should not be dependent on this context. If you need this you should use a computed property or just a method e.g. $translate(foo)
简单来说就是vue2+是故意不给你在filters
里取到this的~
TA贡献1804条经验 获得超7个赞
单页面组件开发时,Vue 不是一个全局对象,它只在 main.js 上可以直接访问。可以在 main.js 中把 Vue 挂在window下,如下:
import moment from 'moment';
Object.defineProperty(Vue.prototype, '$moment', { value: moment });
// Vue.prototype.$moment=moment;
console.log(Vue.prototype);
console.log(this.$moment());
window.Vue = Vue;
TA贡献2019条经验 获得超9个赞
打印出
this
,就在里面找啊;找不到?那肯定是没绑定了;
想用
this
调用,肯定要绑定到原型链上,那就去
main.js
绑定,Vue.prototype.moment = moment
导入组件后
this.moment
调用
TA贡献1805条经验 获得超10个赞
楼上 faymi 的回答很对。
除此之外,楼主还可以在每个组件中按需导入,直接使用即可,比如在 ChildA.vue中,import moment from "moment";
console.log(moment('2018-04-16').toDate());
添加回答
举报