Я использую Nuxt 3.5.1 и Vuejs 3.3, но макрос defineModel всегда возвращает значение undefined, не знаю почему?
<template>
<input v-model = "count">
</template>
<script lang = "ts" setup>
const count = defineModel('count');
debugger //====when I stopped here I get count undefined
</script>
I added this section to nuxt.config.ts but with no success:
vite:{
vue: {
script: {
defineModel: true,
propsDestructure: true
}
}
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вот моя конфигурация nuxt, как вы сказали
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
vite: {
vue: {
script: {
defineModel: true,
propsDestructure: true,
},
},
},
});
И мой компонент
<script setup>
const count = defineModel();
console.info(count?.value);
watch(
() => count.value,
(n) => {
console.info(n);
}
);
</script>
<template>
<input v-model = "count" />
</template>
Помните, что, как сказано в официальном блоге ссылка
3.3 упрощает использование с новым макросом defineModel. Макрос автоматически регистрирует свойство и возвращает ссылку, которую можно изменить напрямую:
Это работает нормально. Думаю, вот ссылка на Stackblitz. Проверьте код. Это рабочий файл и правильно печатает значение в консоли.
Какая у тебя новая версия?
Перейдите по ссылке StackBlitz, где находится полный код. Я использовал Nuxt 3.5.1
Я понял, что в моем nuxt.config.ts есть раздел, который конфликтует с разделом vite:
//=====when I disable this section it works fine
hooks: {
"vite:extendConfig": (config, { isClient, isServer }) => {
if (isClient) {
config.vue = "vue/dist/vue.esm-bundler";
}
},
},
//===this is the vite section
vite:{
vue: {
script: {
defineModel: true,
propsDestructure: true
}
}
}
для определения модели требуется Vue 3.3 и явное согласие. Вы согласились? прокрутите вниз до «Стратегии принятия» для получения инструкций