在Vue3中使用过滤器但无法读取globalProperties

Adi*_*ari 4 vue.js vuejs3

只是一个简单的问题,

我知道 Vue3 不再使用过滤器,并且注释说使用计算或方法代替。但还有一个我们可以使用的 globalProperties,我使用了这个 globalProperties 但不断收到此错误

未捕获的类型错误:无法读取未定义的属性“globalProperties”

有谁知道我的代码中的错误在哪里?

const app = {
data() {
    return {
        message: ""
    }
  }
}

app.config.globalProperties.$filters = {
formatDate(value) {

    if (value == "0001-01-01T00:00:00")
        return "";
    var today = new Date(value);
    var dd = String(today.getDate()).padStart(2, '0');
    var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
    var yyyy = today.getFullYear();

    today = dd + '/' + mm + '/' + yyyy;
    return today;
   }
}

Vue.createApp(app).mount('#app');
Run Code Online (Sandbox Code Playgroud)

我在表中使用过滤器,如下所示

    <td>
         {{ $filters.formatDate(incident.incidentData) }}
    </td>
Run Code Online (Sandbox Code Playgroud)

Bou*_*him 7

配置字段属于根实例而不是根组件,所以你应该这样做:

const app = {
data() {
    return {
        message: ""
    }
  }
}
const myApp=Vue.createApp(app)

myApp.config.globalProperties.$filters = {
formatDate(value) {

    if (value == "0001-01-01T00:00:00")
        return "";
    var today = new Date(value);
    var dd = String(today.getDate()).padStart(2, '0');
    var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
    var yyyy = today.getFullYear();

    today = dd + '/' + mm + '/' + yyyy;
    return today;
   }
}

myApp.mount('#app');
Run Code Online (Sandbox Code Playgroud)

Vue.createApp(app)返回根实例

myApp.mount('#app');将根应用程序安装到元素后,它返回根组件