当前位置: 首页 > 知识库问答 >
问题:

vue.js - 为什么下面的 vue 搜索框无法输入数据?

阮桐
2023-05-26

使用 javascript+vue3+Ant Design Vue 写了下面的代码:

<template>
  <top-bar></top-bar>
  <div class="container">
    <a-page-header
      style="border: 1px solid rgb(235, 237, 240)"
      title="搜索引擎"
      sub-title="搜索引擎健康状态历史记录"
      @back="navigateToRoot"
    >
      <a-row class="content">
        <div style="flex: 1">
          <img
            class="icon theme-icon"
            src="../assets/健康.svg"
            alt="Search Engine Logo"
          />
          <a-typography-title :level="5">
            搜索引擎的健康检查机制介绍:
          </a-typography-title>

          <p>
            为了保证搜索引擎的持续可交付性,引入了搜索引擎的健康检查机制。后台会定时运行检查检查脚本,不断刷新健康检查状态。
            <a
              href="xxx/services/search_engine_health_check_service.py"
              target="_blank"
              >查看健康检查脚本点击</a
            >
          </p>

          <p>
            执行健康检查,会使用一些关键字,调用搜索引擎。通过判断解析到的网页数,来判断搜索要求是否可以正常抓取到数据。
          </p>
        </div>
      </a-row>
    </a-page-header>
  </div>

  <div>
    <a-input
      v-model:value="trackSourceId"
      placeholder="Enter track_source_id"
    />
    <a-button type="primary" @click="fetchData">Fetch Data</a-button>
    <a-table
      v-if="showTable"
      :columns="columns"
      :dataSource="dataSource"
      row-key="id"
      :pagination="false"
    >
      <template #created_at="text">
        {{ formatDate(text) }}
      </template>
    </a-table>
  </div>
</template>

<script>
import { reactive } from "vue";
import { Input, Button, Table } from "ant-design-vue";
import axios from "axios";

export default {
  components: {
    "a-input": Input,
    "a-button": Button,
    "a-table": Table,
  },
  setup() {
    const trackSourceId = reactive(123);
    const dataSource = reactive([]);
    const showTable = reactive(false);

    const formState = reactive({
      meta_uuid: null,
      company_id: null,
      limit: 100,
      len_parse_result_list_gte: null,
    });

    const columns = [
      {
        title: "ID",
        dataIndex: "id",
        key: "id",
      },
      {
        title: "Category",
        dataIndex: "category",
        key: "category",
      },
      {
        title: "Track Source ID",
        dataIndex: "track_source_id",
        key: "track_source_id",
      },
      {
        title: "Keyword",
        dataIndex: "keyword",
        key: "keyword",
      },
      {
        title: "Clip Length",
        dataIndex: "clip_len",
        key: "clip_len",
      },
      {
        title: "Has Error",
        dataIndex: "has_error",
        key: "has_error",
        slots: { customRender: "has_error" },
      },
      {
        title: "Created At",
        dataIndex: "created_at",
        key: "created_at",
        slots: { customRender: "created_at" },
      },
    ];

    const formatDate = (dateString) => {
      const options = {
        year: "numeric",
        month: "long",
        day: "numeric",
        hour: "numeric",
        minute: "numeric",
      };
      const date = new Date(dateString);
      return date.toLocaleString("en-US", options);
    };

    const fetchData = async () => {
      try {
        console.log(trackSourceId);
        const response = await axios.get(
          "http://xxxx.cn/list_search_engine_health_check_history",
          {
            params: {
              track_source_id: trackSourceId,
            },
          }
        );
        dataSource.splice(0, dataSource.length, ...response.data);
        showTable.value = true;
      } catch (error) {
        console.error("Error fetching data:", error);
      }
    };

    return {
      trackSourceId,
      dataSource,
      showTable,
      columns,
      formatDate,
      fetchData,
      formState,
    };
  },
};
</script>

<style>
.gray-placeholder {
  color: gray;
}

.container {
  margin: 0 auto; /* 居中显示 */
  margin-top: 20px;
  max-width: 1440px; /* 设置最大宽度为900px */
  background-color: #ffffff; /* 浅灰色 */
  border-radius: 0.25rem;
}

.container-item {
  padding: 25px;
  border-width: 0 0 1px;
  margin-bottom: 20px;
}

.theme-icon {
  width: 64px; /* 设置图标的宽度 */
  height: 64px; /* 设置图标的高度 */
}
</style>

图片.png

无法输入任何数据,这个 123 还是初始化就有的值,无法修改

共有1个答案

禹昆
2023-05-26

基本数据类型用ref

const trackSourceId = ref(123);

 类似资料:
  • 搜索输入框是一个新兴的html元素,外观为圆角,当你输入文字后右边会出现一个叉的图标,点击则会清除你输入的内容。给input增加type="search" 属性来定义 注意要把label的for属性设为input的id值,使他们能够在语义上相关联,并且要用div容器包裹它们,并给他设定data-role="fieldcontain"属性 HTML 代码: <div data-role="field

  • 问题内容: 我一直在使用一些使用许多ajax请求呈现页面的高级javascript应用程序。要使应用程序可抓取(通过Google),我必须遵循https://developers.google.com/webmasters/ajax- crawling/?hl=fr 。这告诉我们做类似的事情:重新设计我们的链接,创建html快照,…以使站点可搜索。 我想知道为什么搜寻器不运行javascript来

  • 本文向大家介绍vue.js实现只能输入数字的输入框,包括了vue.js实现只能输入数字的输入框的使用技巧和注意事项,需要的朋友参考一下 在菜鸟教程里,看了vue.js的教程,看完后,练练手,就试着实现了只能输入数字的输入框。在之前的博客里,用jquery也实现了这样的功能,这里用vue.js来实现,把实现的过程记录下来 如果只是一个输入框,要实现就非常的简单了,输入框的内容和数据绑定,给数据加一个

  • 我很困惑。为什么array_search会跳过数组中的第一个元素?在数组只返回布尔值的情况下,数组搜索可以返回任何值——这是原因吗?现在这对我来说毫无意义。示例代码如下:

  • 本文向大家介绍Vue数字输入框组件的使用方法,包括了Vue数字输入框组件的使用方法的使用技巧和注意事项,需要的朋友参考一下 最近在通过《Vue.js实战》系统学习Vue,虽然在项目中已多次使用Vue进行开发,但是对于一些非常基础性的知识点还不是很了解,因此这次通过结合数字输入框组件实战来谈谈简单的组件开发。 源代码:数字输入框组件 项目整体结构 ├── src  项目代码 │ ├── common