如何解决“属性内的插值已被删除,使用v-bind或冒号简写”?Vue.js 2

h9a6wy2h  于 2023-04-07  发布在  Vue.js
关注(0)|答案(7)|浏览(190)

我的Vue.js组件是这样的:

<template>
        <div>
            <div class="panel-group" v-for="item in list">
                ...
                <div class="panel-body">
                    <a role="button" data-toggle="collapse" href="#purchase-{{ item.id }}" class="pull-right" aria-expanded="false" aria-controls="collapseOne">
                        Show
                    </a>
                </div>
                <div id="purchase-{{ item.id }}" class="table-responsive panel-collapse collapse" role="tabpanel">
                ...
                </div>
            </div>
        </div>
    </template>

    <script>
        export default {
            ...
            computed: {
                list: function() {
                    return this.$store.state.transaction.list
                },
                ...
            }
        }
    </script>

执行时,会出现如下错误:
Vue模板语法错误:
id=“purchase-{{item.id}}":属性内的插值已被删除。请改用v-bind或冒号简写。
我该怎么解决呢?

dba5bblo

dba5bblo1#

v-bind中使用JavaScript代码(或快捷方式“:”):

:href="'#purchase-' + item.id"

:id="'purchase-' + item.id"

如果使用ES6或更高版本:

:id="`purchase-${item.id}`"
ztyzrc3y

ztyzrc3y2#

使用v-bind或快捷方式语法“:”绑定属性。示例:

<input v-bind:placeholder="title">
<input :placeholder="title">
eh57zj3b

eh57zj3b3#

就用

:src="`img/profile/${item.photo}`"
tzdcorbm

tzdcorbm4#

如果你从一个对象数组中提取数据,你需要像我下面做的那样在你的对象中包含 require('assets/path/image.jpeg')

示例:

people: [
  {
    name: "Name",
    description: "Your Description.",
    closeup: require("../assets/something/absolute-black/image.jpeg"),
  },

在v-img元素中使用 require(objectName.propName.urlPath) 对我不起作用。

<v-img :src="require(people.closeup.urlPath)"></v-img>
niwlg2el

niwlg2el5#

最简单的方法是也需要文件地址

<img v-bind:src="require('../image-address/' + image_name)" />

下面的完整示例显示了**../assets/logo.png:**

<template>
    <img v-bind:src="require('../assets/' + img)" />
</template>

<script>
  export default {
    name: "component_name",
    data: function() {
      return {
        img: "logo.png"
      };
    }
  };
</script>
eqzww0vc

eqzww0vc6#

最优雅的解决方案是将图像保存在Webpack之外。默认情况下,Webpack将图像压缩在Base64中,因此如果您将图像保存在assets文件夹中,这将不起作用,因为Webpack将压缩base64中的图像,并且 * 不是 * React变量。
为了解决这个问题,你需要将你的图片保存在你的 * 公共路径 * 中。通常公共路径是在“公共”文件夹或“静态”中。
最后,你可以这样做:

data(){
  return {
    image: 1,
    publicPath: process.env.BASE_URL
  }
}

你的HTML可以这样做:

<img :src="publicPath+'../statics/img/p'+image+'.png'" alt="HANGOUT PHOTO">

何时使用公共文件夹

  • 在构建输出中需要一个具有特定名称的文件
  • 文件依赖于一个在执行时可以改变的React变量
  • 您有图像,需要动态引用它们的路径
  • 某些库可能与Webpack不兼容,您没有其他选择,只能将其作为标记包含在内。

更多信息:* Vue.js文档中的“HTML和静态资产”*

8nuwlpux

8nuwlpux7#

如果以上所有答案都不起作用,请在Vue-3和Composition API中专门执行此操作
:src=“require(../image/animal_image/${image})”

相关问题