如何在 Vuejs 的 main.js 中使用 Mixin?

Posted

技术标签:

【中文标题】如何在 Vuejs 的 main.js 中使用 Mixin?【英文标题】:How to use Mixin in main.js in Vuejs? 【发布时间】:2020-10-17 15:43:18 【问题描述】:

我正在尝试使用来自 mixin 的全局信息。我打算访问组件中的getNow 计算属性,但它似乎是undefined

main.js:

Vue.mixin(
    data: function() 
        return 
          chainBoxURL: "http://172.22.220.197:18004/jsonrpc"
        
    ,
    computed: 
        getNow() 
          const today = new Date();
          const date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate();
          const time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
          const dateTime = date + ' ' + time;
          return dateTime;
        
    
)

组件:

methods: 
    getChainAddress(form) 
        if (form.password == form.password_again && form.password != '') 
            console.log(this.getNoW)
        
    

【问题讨论】:

发生了什么?您是否收到错误消息?控制台日志的输出是什么?你在哪里包含组件中的mixin?这些信息不足以准确确定您需要什么。 感谢收听。我需要在 client.vue 组件中使用 getNoW 方法。但是它显示为未定义。 prop 定义为getNow,但您的组件尝试访问getNoW(带大写W)。 【参考方案1】:

当您尝试访问getNow 时,似乎有一个错字,有一个W 而不是w

旁注,

    您可以使用template strings 让生活更轻松
const today = new Date();
const date = `$today.getFullYear()-$(today.getMonth() + 1)-$today.getDate()`;
const time = `$today.getHours():$today.getMinutes():$today.getSeconds()`;
const dateTime = `$date $time`;
    您可以在if 语句中翻转您的条件,因为如果&& 的情况下第一个为假,JS 将不会评估第二个条件
if (form.password != '' && form.password == form.password_again) 
  console.log(this.getNoW)

【讨论】:

【参考方案2】:

mixin 中的计算 prop 定义为:getNow(),但你在组件中将其拼写为 getNoW()

或者你可能忘记在组件中包含 mixin。

【讨论】:

以上是关于如何在 Vuejs 的 main.js 中使用 Mixin?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 vuejs 3 将路由器添加到 @vue/cli 应用程序?

将 VueJS 与 laravel 连接起来

在 vue js 上观看路由对象

使用 vuejs 和 laravel 的权限和角色

使用 JQuery 在 PHP 中访问 Vue JS 组件数据

VueJS如何引入css或者less文件的一些坑