Vue 传递多个道具
Vue passing multiple props
我正在使用 PHP 框架 Laravel 构建网站。我想创建一个用于创建和编辑记录的 vue 组件。我已经通过将一个 属性 传递给 vue 组件来实现这一点,但现在我想传递第二个组件来设置按钮的文本。也许有更好的方法来做到这一点,但让我向您展示我目前拥有的东西
Blade 文件
<addeditshow :show="{{$show}}" :buttonText="Edit"></addeditshow>
请注意上面的代码中断,因为它不喜欢 I 并发送第二个参数
这是我的 vue 组件
<template>
<div>
<div class="form-group">
<label for="name">Name</label>
<input type="text" name="name" class="form-control" :value="show.name">
</div>
<div class="form-group">
<label for="number">Number</label>
<input type="number" name="number" class="form-control" :value="show.number">
</div>
<div class="form-group">
<label for="date">Date</label>
<input type="text" id="date" name="airDate" class="form-control" placeholder="Pick a Date" :value="show.airDate">
</div>
<div class="form-group">
<label for="podcast">Podcast URL</label>
<input type="text" id="podcast" name="podcastUrl" class="form-control" :value="show.podcastUrl">
</div>
<button type="submit" class="btn btn-primary">{{ buttonText }}</button>
</div>
</template>
<script>
export default {
mounted() {
console.log(this.show);
},
props: {
show: {
type: Object,
required: true
}
}
}
</script>
不确定我到底错过了什么。如果有 link 我可以阅读的文档,请分享。
如果我明白你的意思,你可以使用 slot
。
在您的组件模板中执行此操作:
<button type="submit" class="btn btn-primary"><slot></slot></button>
当您在 blade 中初始化组件时,请执行以下操作:
<addeditshow :show="{{$show}}">Edit</addeditshow>
或者如果您希望它是动态的,您可以这样做:
<addeditshow :show="{{$show}}">@{{ $buttonText }}</addeditshow>
Vue 2 甚至支持命名插槽。
没有测试,但应该可以。
将您的动态驼峰式属性 :buttonText
更改为烤肉串 :button-text
。我遇到了同样的问题,并试图解决几个小时。
Note that HTML attributes are case-insensitive and camelCased props need to use their kebab-case equivalents when using in-DOM templates. You should probably use "var-val" instead of "varVal".
我正在使用 Vue 2 和 Laravel 5.6。
我正在使用 PHP 框架 Laravel 构建网站。我想创建一个用于创建和编辑记录的 vue 组件。我已经通过将一个 属性 传递给 vue 组件来实现这一点,但现在我想传递第二个组件来设置按钮的文本。也许有更好的方法来做到这一点,但让我向您展示我目前拥有的东西
Blade 文件
<addeditshow :show="{{$show}}" :buttonText="Edit"></addeditshow>
请注意上面的代码中断,因为它不喜欢 I 并发送第二个参数
这是我的 vue 组件
<template>
<div>
<div class="form-group">
<label for="name">Name</label>
<input type="text" name="name" class="form-control" :value="show.name">
</div>
<div class="form-group">
<label for="number">Number</label>
<input type="number" name="number" class="form-control" :value="show.number">
</div>
<div class="form-group">
<label for="date">Date</label>
<input type="text" id="date" name="airDate" class="form-control" placeholder="Pick a Date" :value="show.airDate">
</div>
<div class="form-group">
<label for="podcast">Podcast URL</label>
<input type="text" id="podcast" name="podcastUrl" class="form-control" :value="show.podcastUrl">
</div>
<button type="submit" class="btn btn-primary">{{ buttonText }}</button>
</div>
</template>
<script>
export default {
mounted() {
console.log(this.show);
},
props: {
show: {
type: Object,
required: true
}
}
}
</script>
不确定我到底错过了什么。如果有 link 我可以阅读的文档,请分享。
如果我明白你的意思,你可以使用 slot
。
在您的组件模板中执行此操作:
<button type="submit" class="btn btn-primary"><slot></slot></button>
当您在 blade 中初始化组件时,请执行以下操作:
<addeditshow :show="{{$show}}">Edit</addeditshow>
或者如果您希望它是动态的,您可以这样做:
<addeditshow :show="{{$show}}">@{{ $buttonText }}</addeditshow>
Vue 2 甚至支持命名插槽。
没有测试,但应该可以。
将您的动态驼峰式属性 :buttonText
更改为烤肉串 :button-text
。我遇到了同样的问题,并试图解决几个小时。
Note that HTML attributes are case-insensitive and camelCased props need to use their kebab-case equivalents when using in-DOM templates. You should probably use "var-val" instead of "varVal".
我正在使用 Vue 2 和 Laravel 5.6。