如何在独立JavaScript脚本中使用AlpineJS的$nextTick魔法属性
报错原因
Alpine的$开头的魔法属性默认仅在HTML的Alpine指令属性值中直接注入可用,在外部JS文件定义的组件函数中无法直接访问,需要通过组件实例或者Alpine全局API调用。同时你当前代码中修改title未加this,不会触发Alpine响应式更新。
解决方法
方法1:通过组件实例this调用魔法属性
Alpine会自动将所有魔法属性挂载到当前组件的实例上,在组件的方法内通过this访问即可,修改后的代码如下:
function app() { return { title: 'Hello', updateContent: function() { // 响应式属性必须通过this修改才能触发更新 this.title = 'Hello World!'; // 通过this访问挂载的魔法属性 this.$nextTick(() => { console.log(this.$el.innerText) }); } } }
方法2:使用Alpine全局nextTick方法
你也可以直接调用Alpine暴露的全局API实现相同效果:
function app() { return { title: 'Hello', updateContent: function() { this.title = 'Hello World!'; // 调用全局nextTick方法 Alpine.nextTick(() => { console.log(document.querySelector('button').innerText) }); } } }
注意:需要确保HTML中Alpine的引入代码放在你的
my_script.js引入之前,否则会出现Alpine未定义的错误。
内容的提问来源于stack exchange,提问作者Daniel Campos
相关产品推荐
相关产品推荐

