vue 自己加个属性为啥不对 :primaryControl="{'id1':loadReady}"
时间: 2023-12-03 11:43:15 浏览: 24
在 Vue 中,你可以通过 `v-bind` 指令或简写语法 `:` 绑定一个属性到组件上,但是你需要确保属性名是有效的 JavaScript 标识符。如果属性名不是有效的 JavaScript 标识符,你可以使用字符串字面量的形式来绑定属性。
在你的代码中,`primaryControl` 不是一个有效的 JavaScript 标识符,因为它包含一个大写字母和一个小写字母之间的驼峰式命名,所以你需要将它用字符串字面量的形式来绑定属性,如下所示:
```html
<my-component :['primaryControl']="{ 'id1': loadReady }"></my-component>
```
这里使用了计算属性的语法,将属性名 `'primaryControl'` 用 `[]` 包裹起来,并将属性值包含在一个对象字面量中。
另外,如果你使用了简写语法 `:`,你可以省略掉 `v-bind`,直接将属性名和属性值绑定在一起,如下所示:
```html
<my-component :['primaryControl']="{ 'id1': loadReady }"></my-component>
```
相关问题
vue 自己加个属性为啥不对 :opened="{'false':loadReady}"
在 Vue 中,绑定属性时,属性名后面的值应该是一个表达式,而不是一个对象。所以,如果你要绑定一个 Boolean 类型的属性 `opened`,你可以这样写:
```
<template>
<div :opened="loadReady ? 'true' : 'false'">
<!-- your content here -->
</div>
</template>
```
这里使用三元运算符将 `loadReady` 转换成字符串类型的 `'true'` 或 `'false'`,然后绑定到 `:opened` 属性上。
如果你想绑定一个对象类型的属性,可以使用 `v-bind` 指令或者简写语法 `:`,例如:
```
<template>
<div :my-obj="{ prop1: 'value1', prop2: 'value2' }">
<!-- your content here -->
</div>
</template>
```
或者
```
<template>
<div v-bind:my-obj="{ prop1: 'value1', prop2: 'value2' }">
<!-- your content here -->
</div>
</template>
```
这样可以将一个对象绑定到属性 `my-obj` 上。但是在你的代码中, `:opened` 属性的值是一个对象,这是不正确的用法。
vue 代码有问题 请指正 <div :class="{'fui-search':loadReady}" :opened="{'false':loadReady}" :primaryControl="{'id1':loadReady}">
这个代码的语法有问题,属性名应该是固定的,不能随意命名。`:class` 属性可以用来动态绑定 CSS 类,`:opened` 和 `:primaryControl` 都不是合法的属性名。
如果你想设置一个元素的 CSS 类、是否打开和主要控件 ID,可以分别使用 `class`、`v-show` 和 `id` 属性。例如:
```html
<div class="fui-search" v-show="loadReady" id="id1"></div>
```
这个代码会给 `<div>` 元素设置 `fui-search` 类、在 `loadReady` 为真时显示、并且设置 ID 为 `id1`。