{"record":{"id":"d6edcff2196c0f41","repo":"Meituan-Dianping/mpvue","slug":"el-tag-v-model-value-v-model-is-not-sup-d6edcf","errorCode":null,"errorMessage":"<${el.tag} v-model=\"${value}\">: v-model is not supported on this element type. If you are working with contenteditable, it's recommended to wrap a library dedicated for that purpose inside a custom component.","messagePattern":"<(.+?) v-model=\"(.+?)\">: v-model is not supported on this element type\\. If you are working with contenteditable, it's recommended to wrap a library dedicated for that purpose inside a custom component\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/platforms/web/compiler/directives/model.js","lineNumber":60,"sourceCode":"\n  if (el.component) {\n    genComponentModel(el, value, modifiers)\n    // component v-model doesn't need extra runtime\n    return false\n  } else if (tag === 'select') {\n    genSelect(el, value, modifiers)\n  } else if (tag === 'input' && type === 'checkbox') {\n    genCheckboxModel(el, value, modifiers)\n  } else if (tag === 'input' && type === 'radio') {\n    genRadioModel(el, value, modifiers)\n  } else if (tag === 'input' || tag === 'textarea') {\n    genDefaultModel(el, value, modifiers)\n  } else if (!config.isReservedTag(tag)) {\n    genComponentModel(el, value, modifiers)\n    // component v-model doesn't need extra runtime\n    return false\n  } else if (process.env.NODE_ENV !== 'production') {\n    warn(\n      `<${el.tag} v-model=\"${value}\">: ` +\n      `v-model is not supported on this element type. ` +\n      'If you are working with contenteditable, it\\'s recommended to ' +\n      'wrap a library dedicated for that purpose inside a custom component.'\n    )\n  }\n\n  // ensure runtime directive metadata\n  return true\n}\n\nfunction genCheckboxModel (\n  el: ASTElement,\n  value: string,\n  modifiers: ?ASTModifiers\n) {\n  const number = modifiers && modifiers.number\n  const valueBinding = getBindingAttr(el, 'value') || 'null'","sourceCodeStart":42,"sourceCodeEnd":78,"githubUrl":"https://github.com/Meituan-Dianping/mpvue/blob/6c5d78ee04f58c6d782c456dfcf0fe63c0b7f89b/src/platforms/web/compiler/directives/model.js#L42-L78","documentation":"v-model was applied to an element the compiler can neither treat as a native form control nor as a component: it is a reserved native tag that is not a supported input element. The compiler warns in dev mode instead of generating model code.","triggerScenarios":"Compiling e.g. `<div v-model=\"x\">`, `<p v-model=\"y\">`, `<span v-model=\"z\">` — genDefaultModel not applicable, genComponentModel skipped because config.isReservedTag(tag) is true.","commonSituations":"Trying to two-way bind an arbitrary element's text; v-model on contenteditable divs; stray v-model left on a wrapper element after refactoring.","solutions":["Remove v-model or replace with :value + @input / manual event handling.","For contenteditable, use a dedicated library wrapped in a custom component, then v-model the component (component v-model is supported).","If you meant a form control, use input/textarea/select instead."],"exampleFix":"// before\n<div v-model=\"message\" contenteditable></div>\n// after\n<content-editor v-model=\"message\"></content-editor>","handlingStrategy":"validation","validationCode":"const V_MODEL_NATIVE_OK = new Set(['input', 'textarea', 'select'])\nfunction assertVModelTarget (template) {\n  const tags = Array.from(template.matchAll(/<(\\w+)[^>]*\\sv-model/g)).map(m => m[1])\n  for (const t of tags) {\n    if (!V_MODEL_NATIVE_OK.has(t)) {\n      throw new Error('v-model on <' + t + '> is unsupported; use a component or form control')\n    }\n  }\n}\nassertVModelTarget('<div v-model=\"x\">')","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Restrict v-model to input/textarea/select or custom components","For contenteditable use a dedicated editor component","Remove stray v-model left by refactors","Enable eslint-plugin-vue v-model rules"],"tags":["vue","v-model","compiler"],"backgroundTag":"vue-v-model-unsupported-element","analyzedSha":"6c5d78ee04f58c6d782c456dfcf0fe63c0b7f89b","analyzedAt":"2026-09-02T05:17:40.946Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T11:17:12.671Z"}