Laravel中如何在JS中获取控制器变量的name属性数组?
嘿,我来帮你搞定这个问题!你有两种靠谱的方式可以得到仅包含注册类型名称的数组:一种是在前端JS里处理现有数据,另一种是直接在Laravel后端返回你需要的结果,后者其实更省心高效,我都给你说说~
方法一:前端JavaScript处理现有对象数组
你现在拿到的rtypes是一个包含完整对象的数组,咱们可以用JavaScript的Array.map()方法来提取每个对象里的name属性,生成新数组:
<script type="text/javascript"> var rtypes = {!! $registration_type !!}; // 遍历数组,提取每个元素的name属性组成新数组 var rtypeNames = rtypes.map(function(item) { return item.name; }); // ES6箭头函数写法更简洁: // var rtypeNames = rtypes.map(item => item.name); // 现在rtypeNames就是你要的['general', 'plus', ...]啦 console.log(rtypeNames); </script>
map()方法会遍历原数组的每一项,把你指定的返回值(这里是item.name)收集起来,形成一个全新的数组,完全不会修改原有的rtypes变量。
方法二:Laravel后端直接返回名称数组(更推荐)
其实咱们可以在后端就把数据处理好,前端直接用现成的数组,这样既减少了前端的计算量,也能让前端代码更简洁。只需要修改控制器里的查询代码,用pluck()方法直接获取name字段:
public function edit($id) { $conf = Conf::find($id); // 直接获取所有符合条件的registration_type的name字段,转成数组 $registrationType = RegistrationType::where('conf_id', $id)->pluck('name')->toArray(); return view('questions.edit') ->with('registration_type', $registrationType); }
这样前端拿到的$registration_type已经是['general', 'plus', ...]格式的数组了,直接用就行:
<script type="text/javascript"> var rtypes = {!! $registration_type !!}; // 现在rtypes就是你需要的名称数组啦 console.log(rtypes); </script>
内容的提问来源于stack exchange,提问作者user9289573
相关产品推荐
相关产品推荐

