我在一个带有惯性链接组件的页面上有一个简单的文本区域标记,该组件的样式是一个按钮,用于将文本区域的内容添加到数据库中.

<script setup>

  import { ref } from "vue";
  let noteToAdd = ref('');

</script>

...

<template>

<textarea v-model="noteToAdd"></textarea>

<Link 
  :href  = "route('notes.store')"
  method  = "post"
  as      = "button"
  :data   = "{'note': noteToAdd, 'user_id': user.id }"
>

Add Note

</Link>

... 

</template>

NoteController存储方法只是验证文本区域内容,然后在其上运行一个Create方法.


namespace App\Http\Controllers;

use Illuminate\Support\Facades\Request;
use Inertia\Inertia;

class NoteController extends Controller;

...

public function store()
    {
        $attributes = Request::validate([
            'note'      => ['required', 'min:3'],
            'user_id'   => 'required',
        ]);

        Note::create($attributes);
    }

所有工作都按计划进行.笔记内容已正确添加到数据库中.然而,如果不使用表单,我不知道如何在成功添加到数据库时重置或清除文本区.

这看起来似乎很简单,我可能只是想多了,但我看到的所有文档都需要一个表单,然后清除表单的内容(或单个字段).设置v-Model属性=‘’,似乎也不起作用?

这可以在没有表格的情况下完成吗?如果是这样的话,如何以及最佳实践是在控制器、链接组件或其他地方处理该问题吗?

我可以使用表单来实现这一点,但是,我希望在不使用表单的情况下实现这一点,以可能简化代码.

推荐答案

我在Vue SFC playground上创建了一个例子.You can see that here.

这个例子没有使用Laravel Inertia;但是这个概念应该仍然适用.在您的例子中,如果我没记错的话,inertia/link应该使用@onClick而不是@click.

Using Inertia

如果您不能像上面的inertia/link示例那样使用@onClick@click,那么另一个 Select 是添加一个router event:

import { ref } from 'vue'
import { router } from '@inertiajs/vue3'

const noteToAdd = ref('This is here on pageload.')
const clearTextarea = () => {
  noteToAdd .value = ''
};

router.on('success', clearTextarea)
<template>
  <textarea v-model="noteToAdd"></textarea>
  <Link 
    :href   = "route('notes.store')"
    method  = "post"
    as      = "button"
    :data   = "{'note': noteToAdd, 'user_id': user.id }"
  >
      Add Note
  </Link>
</template>

此代码未经测试.

然而,我个人的意见是,最好的做法是只使用惯性形式.这将是最佳实践,无论代码是否比没有表单时更大/更小.

谢谢,希望这能帮上忙.

Laravel相关问答推荐

子目录中具有Vue实例的Laravel不起作用

运行Docker时,安装PHP8.1时返回错误

处理程序类中的错误 - Laravel

Laravel 从 5.1 升级到 5.2.0 错误

如何更新 Laravel 4 中现有的 Eloquent 关系?

Laravel 5.2 无法打开 laravel.log

为什么 Laravel 5 会自动更新我的日期字段?

Laravel 5 如何全局设置 Cache-Control HTTP 标头?

允许的内存大小 134217728 字节用尽(试图分配 20480 字节) Laravel

laravel:如何在 Eloquent Query 中使用 LOWERCASE 函数?

Laravel 4:读取由 javascript 设置的 cookie

Laravel Passport Route [login] 未定义

laravel 4 - 如何限制(采取和跳过)Eloquent的 ORM?

Laravel 规则和正则表达式 (OR) 运算符的问题

如何在 laravel 中使用 GROUP_CONCAT

在 Laravel 5 控制器中找不到类App\Http\Controllers\DB

Laravel Eloquent模型如何从关系表中获取数据

Laravel 在域和子域中共享 cookie 检测问题

如何在 Laravel 5 中验证 RESTful API?

如何使用 Postman 处理 Laravel $_POST 请求