laravel - laravel 刀片模板文件中与 Vue3 内联模板(使用插槽)的 2 方式绑定
问题描述
在 Vue3 中,内联模板已被贬低,现在使用插槽。是否可以为刀片模板中编写的 Vuejs 组件的变量进行 2 路绑定?
我想为与刀片模板内联编写的 Vue 组件进行 2 向绑定。虽然我知道我可以传递数据,<example-component name="Hello World">
但到处添加道具是一项繁重的工作。
Vue 建议使用插槽作为内联模板替换,因为它已在 v3 中删除,但是,该文档没有任何意义。我已经使用下面的代码显示了组件。这是一个简单的文本字段+段落来显示名称。
home.blade.php(为简洁起见删除了不必要的 HTML)
<div>
<h1>Dashboard</h1>
<example-component>
<div class="container">
<input v-model="name" placeholder="Change Name"/>
<p> Name is @{{ name }} </p>
</div>
</example-component>
</div>
示例组件.vue
<template>
<div>
<slot></slot>
</div>
</template>
<script>
export default {
data() {
return {
name: 'hi',
}
}
}
</script>
不幸的是,这不起作用,名称不会以“hi”开头,并且在更改文本字段时不会更新。当我尝试类似<slot :name=name></slot>
. 我相信这会将名称传递到插槽部分,组件会在消失之前呈现一秒钟。
是否有可能在刀片模板中与 vue 变量进行双向绑定?任何帮助表示赞赏。
- Vue:3.0.5
- Laravel:8.29.0
解决方案
您将数据存储在子组件中是否有原因?反应性设计通过向下传递道具并向上发射事件来工作,即使(不幸的是)在将变量传递给父组件时没有保持反应性。似乎有点违反直觉,但我可能会在您尝试创建的内容中遗漏一些东西。
但是,如果您将数据放入应用程序而不是组件中,它将起作用。
// app
const app = Vue.createApp({
data() {
return {
name: 'hi',
}
}
})
// component
app.component('example-component', {
template: `
<div>
<slot></slot>
</div>`,
})
app.mount("#app");
<script src="https://unpkg.com/vue@3.0.5/dist/vue.global.prod.js"></script>
<div id="app">
<h1>Dashboard</h1>
<example-component>
<div class="container">
<input v-model="name" placeholder="Change Name"/>
<p> Name is @{{ name }} </p>
</div>
</example-component>
</div>
<!--
推荐阅读
- powershell - 在 Windows 中批量重命名和复制多个文件
- excel - 带有文件名的 Excel 宏在 Office 2016 64 位中不起作用
- ruby-on-rails - Heroku 上的 Rails 应用程序中出现无法解释的 H18 错误
- multithreading - 对象和线程交互建模
- javascript - React & Redux 应用程序在带有断点的调试模式下表现正确,而在没有断点时表现不正确
- jekyll - 在处理页面之前在 Jekyll 中解析 YAML 前端的液体变量
- ios - 在 ARKit 中两个节点的中点显示 SCNText
- python - 将二进制数组转换为概率分布
- json - 我想使用 Jq 将文本文件数据转换为 JSON
- apache-kafka - Kafka连接partition.duration.ms和刷新大小之间的属性关系?