javascript - 如何在Vue js中处理“渲染错误:TypeError:无法读取未定义的属性'abc'”
问题描述
现实世界的数据通常不像我们想象的那样结构化。我记得如果 angularjs 模板尝试访问未定义的属性,它只会呈现一个空字符串。我非常喜欢这个默认值。对于 Vue,一个错误就会阻止整个组件的渲染。
我阅读了有关错误边界的信息,但是包装每个可能访问未定义属性的单个元素是不现实的。
我的问题是:如何优雅地处理此类错误并自信地构建一个始终呈现的组件,即使数据不正确?
解决方案
你可以使用这样的东西:
<p>{{x?x.abc:""}}</p>
如果x
in 未在您的数据对象中定义,这将引发交战,但您的应用程序仍可正常运行。
解决这种冲突的一种方法是在你的对象中定义一个getter
like for ,如下所示:x
computed
{
data(){
_x:null, //or it may completely missing or an empty object {}
},
computed:{
x: function(){
return this._x?this._x:{}
}
}
}
现在你可以像这样使用它:
<p>{{x.abc}}</p>
推荐阅读
- powershell - 脚本中的问题:调用命令“错误:通信出错”
- unity3d - 动态生成圆柱段形状的对象
- java - 获取在 servlet 容器中运行的 jar 资源中打包/包含的文件的信息
- html - 具有相同页面的 Amp 页面实现
- angular - 角度 cli 版本映射到角度版本?
- .htaccess - htaccess 将通配符子域的规则重写为 codeigniter 中的参数
- java - 泛型类的 Autowire 子类
- python - 在pygame中将screen.fill设置为渐变?
- python-3.x - QApplication框架内的PyQt5 QDialog
- firebase - 当 Xamarin.Forms Android 应用程序关闭、停止或未运行时,无法显示 FCM 远程通知