如何使用带空格的 VueJS 数据键

Posted

技术标签:

【中文标题】如何使用带空格的 VueJS 数据键【英文标题】:How to use VueJS data key with space 【发布时间】:2018-10-05 00:46:33 【问题描述】:

我正在使用现有数据库,其中每个表列都包含空格。作为 VueJS api 的结果,我得到了带有空格的数据键,如下所示:

data = 
Course Trained:"82",
Course trained 2:null,
Delivery Channel:"IA2DC1",
End Date:"2017-05-06",
Full Name:"9",
ID:"1",
Intervention:"IA2",
Number of sessions:"5",
Start Date:"2017-05-02",
Training Orginisation:"2",

我的问题是当我尝试使用'v-model' => 'Course Trained'时,整个页面编译出错。

如何在 VueJS 中处理这个带有空格的问题?

PS。我无法删除空格来更改表列名称。因为它链接到许多关系和第 3 方应用程序。

【问题讨论】:

是的,键的空格是我的问题。例如,我想通过 v-model 访问键名:Course Trained。整个页面会编译错误。 【参考方案1】:

我认为使用带空格的数据变量不是一个好主意。它会让你的生活变得复杂。

但无论如何,您可以使用yourdata[key_name] 对其进行访问/v-model,如下所示:

app = new Vue(
  el: "#app",
  data: 
    test:  //if not root
      'test name': "Cat in Boots"
    ,
    'test 1': 'Snow White' // if root
  
)
<script src="https://unpkg.com/vue@2.5.16/dist/vue.js"></script>
<div id="app">
    <h2>test['test name']</h2>
    <input v-model="test['test name']">
    <h2>$data['test 1']</h2>
    <input v-model="$data['test 1']">
</div>

编辑:

正如Vue的作者所说:this会根据你所在的函数作用域在编译的模板中发生变化。

所以不要在模板中使用this,尤其是v-model

app = new Vue(
  el: "#app",
  data: 
    'test 1': 'Cat in Boots'
  
)
a 
  color:red;
  font-weight:bold;
<script src="https://unpkg.com/vue@2.5.16/dist/vue.js"></script>
<div id="app">
    <h2>this['test 1']</h2>
    <input v-model="this['test 1']"> <a>If using `this`, you will find v-model not working as expected</a>
</div>

【讨论】:

是的,+1,如果 'test name' 在根目录中,则 OP 也可以使用 &lt;input v-model="$data['test name']"&gt;(尽管最好像在此演示中那样将其嵌套在属性中)。 感谢您的建议,更新了我的答案。其实我在尝试v-model="this['test name']",但是会导致数据无法获取更新。我在谷歌上搜索它,但没有找到有用的信息。你知道$data['test 1']this['test 1'] 有什么区别吗?可能需要查看 vue 源代码才能了解如何实现 v-model。 我认为我们可以像this.test一样访问方法或计算中的数据,这就是为什么我首先想到的是使用this['test']。如果将&lt;h2&gt;$data['test 1']&lt;/h2&gt; 更改为&lt;input v-model="this['test 1']"&gt;,似乎可行,但实际上如果更改输入的值,它不会得到更新。似乎输入绑定了一个值,它是来自$data['test 1'] 的一个克隆 非常感谢。我的问题解决了。 $data['test 1']this['test 1'] 都为我工作。 @LimSocheat 检查此don't use this in template【参考方案2】:

使用别名和 Laravel Eloquent 查询有空格的列,这样你就不必在前端代码中费心了,

在列中也有空间,这确实是一个糟糕的数据库设计,你最终会遇到非常复杂的问题..

【讨论】:

非常感谢,这可能是可选的方法,因为有数千个表列,我无法为每一列保留别名。因为我正在研究由其他人设计的现有数据库,所以我无法对列名进行任何更改。

以上是关于如何使用带空格的 VueJS 数据键的主要内容,如果未能解决你的问题,请参考以下文章

如何将带参数的 Laravel 模型函数调用到 Vuejs 模板中?

如何添加一个新的数字(字符串)键并将其余键移动 +1 而不会破坏 Vuejs 数据中的反应性

如何在表格中显示 JSON 键 - VueJS

如何使用带空格的命令名称?

如何输入带空格的字符串

如何使用 sqoop 导入支持带空格的列名?