vuejs3动态属性没有值

35g0bw71  于 2023-01-21  发布在  Vue.js
关注(0)|答案(2)|浏览(237)

如何在vuejs3. Vanilla js中设置动态属性要容易得多,但在Vue中这显然不明显。
我希望能够使用变量作为属性。
大概是这样的

<q-input
     outlined <---(This must be variable "item.design" without any value)
     v-model="data.value"
     maxlength="12"
     class="super-small subshadow-25"
   />

我读过一些例子和文档,但这些例子主要是针对vuejs2的。
我错过什么了吗?

wj8zmpe1

wj8zmpe11#

您可以在属性上使用v-bind:(或简写:),轻松地将数据变量绑定到属性:

<q-input
  :outlined="outlined"
  :filled="filled"
  v-model="data.value"
  maxlength="12"
  class="super-small subshadow-25"
/>

// script (options api)
data() {
  return {
    item: {
      design: 'filled',
    },
    data: {
      value: null,
    },
  };
},

computed: {
  filled() {
    return this.item.design === 'filled';
  },
  outlined() {
    return this.item.design === 'outlined';
  },
}
qaxu7uf2

qaxu7uf22#

看一下下面的代码片段,你可以将true/false传递给绑定的属性:

const { ref, computed } = Vue
const app = Vue.createApp({
  setup () {
    const data = ref({value: null})
    const item = ref({design: 'filled'})
    const design = (type) => {
      return item.value.design === 'filled' ? 'outlined' : 'filled' 
    }
    return { data, item, design }
  }
})

app.use(Quasar)
app.mount('#q-app')
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons" rel="stylesheet" type="text/css">
<link href="https://cdn.jsdelivr.net/npm/quasar@2.5.5/dist/quasar.prod.css" rel="stylesheet" type="text/css">
<div id="q-app">
  <div class="q-pa-md">
    <q-btn color="white" text-color="black" label="toogle design" @click="item.design = item.design === 'filled' ? 'outlined' : 'filled'" >
    </q-btn>
    <q-input
       :filled="design(item.design)"
       :outlined="design(item.design)"
       v-model="data.value"
       maxlength="12"
       class="super-small subshadow-25"
     />
   </div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script>
<script src="https://cdn.jsdelivr.net/npm/quasar@2.5.5/dist/quasar.umd.prod.js"></script>

相关问题