'v-bind'指令需要一个属性值

MrL*_*atg 6 javascript vue.js

我正在尝试使用vue.js创建某种类型的树,并陷入元素道具的问题。请帮我。

我已经尝试:content="{{tempCont}}"过了content="{{tempCont}}",但是都没有成功。

这是我使用tree元素的地方:

<div id="tree">
    <treeItem :title="Parent" :content="{{tempCont}}"></treeItem>
</div>
Run Code Online (Sandbox Code Playgroud)

这是整个树元素:

<template>
    <div>
        <p v-on:click="openTree">{{title}}</p>
        <div id="childs" v-if="childVisibility">
            <treeItem v-for="item in content" :key="item" title=item>
        </div>
    </div>
</template>

<script>
export default {
    data: {
        childVisibility: false
    },

    methods: {
        openTree: function(){
            childVisibility = !childVisibility;
        }
    },

    props: {
        title: String,
        content: Array,
    }
}
</script>

<style scoped>

</style>
Run Code Online (Sandbox Code Playgroud)

我收到此错误:错误图片

Sar*_*and 16

好的,首先,当您 v-bind 之类的东西v-bind:titleor 时:title,您绑定的内容表示为 javascript 表达式。

因此,如果您希望您的title属性是 string Parent,则需要将其编写为原生 html 属性title="Parent"(注意缺少:),或者作为 vue 绑定属性v-bind:title="'Parent'"或:title="'Parent'"(注意''在 javascript 中使用来表示字符串原始类型。

现在,{{ variable }}语法在 vuejs 模板中使用,但您不需要在 v-bind 属性中使用它,因为它们已经被解释为 javascript。

所以你不应该这样写:

<div id="tree">
    <treeItem :title="Parent" :content="{{tempCont}}"></treeItem>
</div>
Run Code Online (Sandbox Code Playgroud)

但这反而是:

<div id="tree">
    <treeItem title="Parent" :content="tempCont"></treeItem>
</div>
Run Code Online (Sandbox Code Playgroud)

因为tempCont已经是一个有效的 javascript 表达式。


Saj*_*han 15

像这样使用: :content="tempCont"

<div id="tree">
  <treeItem :title="Parent" :content="tempCont"></treeItem>
</div>
Run Code Online (Sandbox Code Playgroud)