6 回答

TA貢獻(xiàn)1780條經(jīng)驗 獲得超5個贊

TA貢獻(xiàn)1725條經(jīng)驗 獲得超8個贊
看了下報錯信息,應(yīng)該是this的取值不對。 看看有沒有在選項中(鉤子函數(shù)
or data
or watch
or computed
)用了箭頭函數(shù)。沒有具體的代碼只能想到這個了。
試了一下,在filters
中this不是vue實例。建議通過computed
屬性來實現(xiàn)你的需求。
搜了下相關(guān)信息:尤大原話:
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貢獻(xiàn)1804條經(jīng)驗 獲得超7個贊
單頁面組件開發(fā)時,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貢獻(xiàn)2019條經(jīng)驗 獲得超9個贊
打印出
this
,就在里面找??;找不到?那肯定是沒綁定了;
想用
this
調(diào)用,肯定要綁定到原型鏈上,那就去
main.js
綁定,Vue.prototype.moment = moment
導(dǎo)入組件后
this.moment
調(diào)用

TA貢獻(xiàn)1805條經(jīng)驗 獲得超10個贊
樓上 faymi 的回答很對。
除此之外,樓主還可以在每個組件中按需導(dǎo)入,直接使用即可,比如在 ChildA.vue中,import moment from "moment";
console.log(moment('2018-04-16').toDate());
添加回答
舉報