VueJS将参数传递给弹出“对话框”

Posted

技术标签:

【中文标题】VueJS将参数传递给弹出“对话框”【英文标题】:VueJS Passing parameters to a Popup "Dialog" 【发布时间】:2019-06-03 09:25:01 【问题描述】:

我有一个难题正在构建一个应用程序来跟踪学生的时间,在一个选项卡中,您可以看到学生列表及其本季度的总小时数,并且有一个查看更多按钮打开一个对话框“弹出窗口”您显示该特定学生的个人资料。

现在,如果您单击按钮,我就有“@click="dialog = true" 来打开对话框,就是这样!

我的问题是如何将学生 ID 传递到此页面,以便我可以联系 ye API 并获取学生信息

学生观

<v-data-table :headers="headers"
                :pagination.sync="pagination"
                :items="filteredResources"
                :search="search">
    <template slot="items" slot-scope="props">
      <td> props.item.sid </td>
      <td class="text-xs-left"> props.item.firstName </td>
      <td class="text-xs-left"> props.item.lastName </td>
      <td class="text-xs-left"> props.item.totalHours </td>
      <td class="text-xs-left"> props.item.reason </td>
      <td class="text-xs-left">
        <v-btn fab dark small
               color="primary"
               @click="dialog = true">
          <v-icon dark>edit</v-icon>
        </v-btn>
      </td>
    </template>
    <v-alert slot="no-results" :value="true" color="error" icon="warning">
      Your search for " searchQuery " found no results.
    </v-alert>
  </v-data-table>

脚本

<script>
 import axios from 'axios'
 import StudentProfile from './studentsProfile'
 export default 
   components: 
  'studentsProfile': StudentProfile
     ,
    data() 
     return 
    pagination: 
      rowsPerPage: 25
    ,
    dialog: false,
    notifications: false,
    sound: true,
    widgets: false,
    searchQuery: '',
    headers: [
      
        text: 'SID',
        align: 'left',
        sortable: false,
        value: 'name'
      ,
       text: 'Firts Name', value: 'firtsname' ,
       text: 'Last Name', value: 'fat' ,
       text: 'Total Hours', value: 'carbs' ,
       text: 'Reason', value: 'protein' ,
       text: 'View More', value: 'view'
    ],
    summary: []
  
,
created() 
  axios.get('/api/StudentSummary')
    .then(response => 
      // JSON responses are automatically parsed.
      this.summary = response.data
    )
    .catch(e => 
      this.errors.push(e)
    )
,
computed: 
  filteredResources() 
    if (this.searchQuery) 
      return this.summary.filter((item) => 
        return item.sid.startsWith(this.searchQuery);
        //return item.searchQuery.startsWith(this.searchQuery);
        //return 
   item.firstName.toLowerCase().includes(this.searchQuery.toLowerCase())
      )
     else 
      return this.summary;
    
  
     

【问题讨论】:

v-alert,给你 :) 不要使用@click="dialog = true",而是使用@click="openDialog(props.item.sid)",并在methods中创建openDialog(sid),它将负责为给定sid打开模式并从API加载数据 【参考方案1】:

您可以定义一个名为editStudent 的方法并将sid 作为参数传递:

模板:

  <v-btn fab dark small
           color="primary"
           @click="editStudent(props.item.sid )">

方法:

    methods:
         editStudent(id)
              this.dialog=true;
              this.editedSid=id;
           
         
<v-dialog v-model="dialog" >

  <v-btn fab dark small color="primary" @click="editStudent(props.item.sid)">
    <v-icon dark>edit</v-icon>
  </v-btn>

  <!-- the dialog conent -->

</v-dialog>

【讨论】:

以上是关于VueJS将参数传递给弹出“对话框”的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何将参数传递给AsyncTask的onPreExecute()?

Laravel 6 如何将参数传递给 Vue Js @click 方法

通过javascript将参数传递给动作不会传递整数值

将参数传递给javascript中的弹出窗口[重复]

JqueryMobile 1.4.0 将参数传递给弹出窗口

如何将传递给我的 bash 脚本的所有参数传递给我的函数? [复制]