SyntaxError: Unexpected token } in Vue js

SyntaxError: Unexpected token } in Vue js

我的代码是这样的:

<multiple-photo-product :product="{{ isset($product) ? $product : '' }}"></multiple-photo-product>

代码运行时抛出错误:

SyntaxError: Unexpected token } in

但是如果代码是这样的:

 <multiple-photo-product product="{{ isset($product) ? $product : '' }}"></multiple-photo-product>

它不会抛出错误。

我加了:,这样数据就作为对象发送了

如果不使用:,则数据以字符串形式发送。

我该如何解决?

在VueJS2中,带有:的属性不需要{{ }}。在你的情况下,三元是这样的:

<multiple-photo-product product="isset($product) ? $product : ''"></multiple-photo-product>

来源:https://vuejs.org/v2/guide/syntax.html#Attributes

Mustaches cannot be used inside HTML attributes, instead use a v-bind directive

问题在于,如果 php 变量 $product 未设置(即等于 null""),那么 Vue 将尝试将道具 :product'' 绑定,最终会导致错误(例如尝试进行 :product="" 绑定)

尝试以下操作:

<multiple-photo-product :product="{{ isset($product) ? $product : '""' }}"></multiple-photo-product>

注意双引号 "" 被单引号包围。这将告诉 Vue 用空字符串绑定 product 属性,以防 php 的 $product 变量未设置。

也请看看here。您可能会发现它很有帮助。要记住的关键点是 v-bind 期望 有效 javascript 表达式 ,即插值(即 Blade 的大括号内的任何内容 {{}} ) 也必须是有效的 javascript 表达式