javascript - 处理 VueJS 范围
问题描述
我正在处理范围问题,我无法使用let that = this;
我想更改变量的解决方法error
。这是一个 CODEPEN 示例
HTML
<div id="app" class="container">
{{error}}
<br>
<button type="button" @click="change()">Change Variable Error</button>
</div>
JS
var demo = new Vue({
el: '#demo',
data:{
error: "a",
item: {
foo: function(){
alert('Change!');
this.error = "Something went wrong!";
}
}
},
methods:{
change(){
this.item.foo();
}
}
});
谢谢!
解决方案
这不是 vue 问题,而是 javascript "THIS" 问题。您可以在方法中使用此代码获得所需的内容。
change() {
this.item.foo.bind(this)();
}
在函数 foo 中,有this.error
. 但这this
并不局限于 vue 实例的范围。因此,您应该在调用之前将其绑定到此范围内。
另外,我不建议您改变数据属性中的状态。它可能是反模式。
推荐阅读
- javascript - 如何使一小部分div可点击
- ios - 带 AuGraph 的变速单元 [iOS Swift]
- swift - SwiftUI - 使用自定义绘图包装 UIView 时出现 UIViewRepresentable 故障
- html - 我试过调用我的 CSS 动画,但它不起作用
- c# - 添加 System.Drawing.Common 引用
- django - django 3 - 如何将文章模型外键设置为登录用户 ID?
- titanium - 使用 node-gyp 的 Titanium 应用程序编译错误
- abap - 在 AT SELECTION-SCREEN 中设置依赖列表框的值
- python - instagram basic display api Exchange Code for Token 返回 400 OAuthException Invalid platform app
- angular - Angular中数据的异步操作