javascript - Vue 与 Laravel,传递 null 道具
问题描述
是否可以传递一个空道具?我已经定义了一个采用user
prop 的主组件。
<div id="app">
<master :user="{{ $user }}"></master>
</div>
道具定义如下:
props : {
user: {
type: Object
}
},
现在在控制器内部,如果用户经过身份验证,我将传递用户变量,否则我将传递 null:
public function index()
{
$user = Auth::check() ? Auth::user() : null;
return view('master', compact('user'));
}
我遇到了一个问题The value for a v-bind expression cannot be empty
。即使我删除冒号以使其不绑定,我也无法做到。我还尝试明确设置不需要道具,但这些都不起作用。
这可以以某种方式解决,以便我将一个空/空对象传递给 Vue 吗?
解决方案
在 JS 中 null 实际上是对象类型。但是prop
Vue 的检查不认为 null 是一个对象,见这里。
无论如何,如果$user
为空,{{ $user }}
则转换为空,因此您最终得到
<master :user=""></master>
这是一个空字符串。
您可以不指定类型,如下所示:
props : ['user'],
或者,如果您愿意,请将类型指定为字符串或对象:
props : {
user: {
type: [Object, String]
}
},
或者如果$user
为空,则创建一个空对象:
<master :user="{{ $user ?? '{}' }}"></master>
推荐阅读
- r - 查看器窗格以错误的尺寸打印
- php - 我怎样才能得到 COUNT(id) 的值
- wordpress - 如何包装 wp_list_pages($args); 与 div 和 ul 元素?
- git - 使用 vs 代码从 github 克隆一个颤振项目
- autodesk-viewer - 如何复制模型浏览器的功能?
- java - 模拟在类级别创建的新对象
- arrays - 如何将具有非标准索引的数组转换为 json?
- oracle-cloud-infrastructure - 线程“main”com.oracle.bmc.model.BmcException 中的异常:(400,InvalidParameter,false)令牌识别错误:':'
- typescript - 为什么我的 sinon 测试超时而不是失败?
- c# - 数据通过应用程序存储在计算机中,而不是智能手机中