You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue中基于计算属性的textarea条件占位符正确语法咨询

解决Vue中textarea动态设置placeholder的问题

嘿,我来帮你搞定这个动态占位符的问题~你之前的写法问题在于直接在HTML属性里嵌套了Vue模板插值{{}},这不符合Vue的模板语法规范,咱们得用Vue的属性绑定来实现动态占位符。

正确的实现方式

Vue中要动态绑定HTML属性,需要用v-bind:(或者简写的:),然后在绑定的表达式里写条件逻辑就行,不需要再套{{}}。这里给你两种常用写法:

写法一:三元表达式(兼容性好,Vue2/Vue3都能用)

直接在:placeholder的绑定表达式里写三元判断,因为activity是计算属性,直接调用它的feedback属性就行:

<textarea v-model="feedback_text" :placeholder="activity.feedback ? activity.feedback : 'Leave some formative feedback'"></textarea>

如果担心activity本身可能为null/undefined导致报错,可以再加一层判断:

<textarea v-model="feedback_text" :placeholder="activity && activity.feedback ? activity.feedback : 'Leave some formative feedback'"></textarea>

写法二:空值合并运算符(Vue3推荐,更简洁)

如果是Vue3项目,原生支持ES6的空值合并运算符??,它只会在左侧值为null或undefined时才返回右侧默认值,比三元表达式更简洁:

<textarea v-model="feedback_text" :placeholder="activity.feedback ?? 'Leave some formative feedback'"></textarea>

要是activity也可能不存在,搭配可选链?.一起用更安全:

<textarea v-model="feedback_text" :placeholder="activity?.feedback ?? 'Leave some formative feedback'"></textarea>

(注:Vue2项目要使用??和?.的话,需要安装对应的Babel插件或Composition API)

为什么原来的写法不行?

Vue的模板插值{{}}只能用在文本内容里,不能直接写在HTML属性中。要动态修改属性值,必须用v-bind(或简写:)来绑定,这样Vue才能解析属性里的表达式逻辑。

内容的提问来源于stack exchange,提问作者jj008

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:21:57