gpt4 book ai didi

javascript - 模板中的 VueJS 绑定(bind)类不起作用

转载 作者:行者123 更新时间:2023-12-01 00:21:59 25 4
gpt4 key购买 nike

我正在学习VueJS,我想制作选项卡组件。我有一个 main.js 和 index.html 文件,如下所示:

Vue.component('tabs', {
template: "<div><div class='tabs is-medium'><ul><li v-for='tabb in tabs' :class='{'is-active': tabb.selected}'><a href='#'>{{ tabb.name }}</a></li></ul></div><div class='tabs-details'> <slot></slot></div></div>",
data() {
return {tabs: []};
},

created() {
this.tabs = this.$children;
}
});

Vue.component('tab', {
template: '<div><slot></slot></div>',
props: {
name: {required: true },
selected: { default: false }
}

})

new Vue({
el: '#root'

});
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.min.css">

</head>
<body>

<div id="root">

<tabs>
<tab name="Tab1" :selected="true">
<h1>Tab1 content</h1>
</tab>

<tab name="Tab2">
<h1>Tab2 content</h1>
</tab>

<tab name="Tab3">
<h1>Tab3 content</h1>
</tab>

</tabs>
</div>


<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>

</body>
</html>

问题出在类绑定(bind)部分(:class='{'is-active': tabb.selected}')。当代码被删除或未使用绑定(bind)且类值保持不变 (class='is-active') 时,该代码将起作用。我想知道为什么绑定(bind)类不起作用?

注意:单引号在模板中随处使用,因为它(显然)是我可以将所有内容保留在编辑器 Atom 中的模板中(因此在“”之间)的唯一方法。

最佳答案

你不能这样写:

:class='{'is-active': tabb.selected}'

您将单引号用于两个不同的目的。一旦 Vue 遇到第二个 ',它就会认为属性值已经结束。这最终相当于:

:class='{'

通常的约定是对模板使用反引号(不要与单引号混淆),如下所示:

template: `
<div>
<div class="tabs is-medium">
<ul>
<li v-for="tabb in tabs" :class="{'is-active': tabb.selected}">
<a href="#">{{ tabb.name }}</a>
</li>
</ul>
</div>
<div class="tabs-details">
<slot></slot>
</div>
</div>
`,

如果您确实不能使用反引号,那么只需转义一些双引号即可。因此,其中之一:

:class=\"{'is-active': tabb.selected}\"

或者:

:class='{\"is-active\": tabb.selected}'

关于javascript - 模板中的 VueJS 绑定(bind)类不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59335611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com