第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

vue注冊了全局方法,調(diào)用的時候獲取不到怎么辦

vue注冊了全局方法,調(diào)用的時候獲取不到怎么辦

慕森王 2019-03-12 17:14:36
這是打印的Vue.prototype,和this.$moment();以下是main.js中的代碼import moment from 'moment';Object.defineProperty(Vue.prototype, '$moment', { value: moment });// Vue.prototype.$moment=moment;console.log(Vue.prototype);console.log(this.$moment());根據(jù)樓上大神所說,main.js直接打印this.$moment 跟在組件中this.$moment的this不是一個this,應(yīng)該直接在組件中輸入,我試了下,確實可以在組件中輸出console.log(this.$moment());但是使用相關(guān)的方法依然不生效:created(){      console.log(this.$moment());      this.$moment.locale('zh-cn');    },    filters:{      formatTime(time){        return this.$moment(time).fromNow();      },    },
查看完整描述

6 回答

?
翻閱古今

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

在組件中可以使用 this.$moment() 這種方式調(diào)用,在 main.js中是不行的,這時候this指向window,你可以使用 Vue.prototype.$moment() 這樣的方式調(diào)用


查看完整回答
反對 回復(fù) 2019-03-28
?
海綿寶寶撒

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

在main.js引入:

https://img1.sycdn.imooc.com//5c9c23950001fb0103380028.jpg

https://img1.sycdn.imooc.com//5c9c239500015f2c02870028.jpg

在組件中引用:

https://img1.sycdn.imooc.com//5c9c239700019f9d05000026.jpg


查看完整回答
反對 回復(fù) 2019-03-28
?
qq_遁去的一_1

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的~


查看完整回答
反對 回復(fù) 2019-03-28
?
三國紛爭

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;


查看完整回答
反對 回復(fù) 2019-03-28
?
慕少森

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

  1. 打印出 this,就在里面找??;

  2. 找不到?那肯定是沒綁定了;

  3. 想用 this調(diào)用,肯定要綁定到原型鏈上,

  4. 那就去 main.js 綁定,Vue.prototype.moment = moment

  5. 導(dǎo)入組件后this.moment調(diào)用


查看完整回答
反對 回復(fù) 2019-03-28
?
holdtom

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

樓上 faymi 的回答很對。
除此之外,樓主還可以在每個組件中按需導(dǎo)入,直接使用即可,比如在 ChildA.vue中,
import moment from "moment";
console.log(moment('2018-04-16').toDate());

查看完整回答
反對 回復(fù) 2019-03-28
  • 6 回答
  • 0 關(guān)注
  • 5769 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號