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

Alpine.js中x-text在变量更新时不生效问题求助

解决Alpine.js x-text变量更新不生效的问题

你的问题核心在于每次调用wordcount()都会生成全新的组件实例:

  • x-data绑定的是页面初始化时创建的第一个实例,<p x-text="wc">关联的是这个实例的wc变量
  • 而textarea的@keyup="wordcount().updateWordCount()"每次触发都会创建新实例,调用的是新实例的方法,修改的是新实例的wc和全局变量,和x-data绑定的实例完全无关,所以页面上的x-text自然不会同步更新。

修正方案

把textarea放到x-data的作用域内,直接调用组件实例的方法,同时移除多余的全局变量:

修正后的HTML代码

<div x-data="wordcount()" class="wordcount-container">
  <p x-text="wc"></p>
  <textarea id="writing" @keyup="updateWordCount()"></textarea>
</div>

修正后的JS代码

function wordcount(){
    return {
        wc: 0,
        updateWordCount(){
            this.wc = document.getElementById("writing").value.length;
        }
    }
}

原理说明

将textarea纳入x-data的作用域后,@keyup触发的updateWordCount()就是当前组件实例的方法,修改的是实例自身的wc变量。Alpine.js会自动监听组件内部状态变化,一旦wc更新,就会同步刷新x-text绑定的内容。全局变量在此处完全多余,Alpine组件的状态由自身管理即可。

内容的提问来源于stack exchange,提问作者Bình Ông

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 04:07:41