javascript - Vue - 如何制作一个按钮列表,每个按钮都会打开一个具有不同 URL 的新窗口?

标签 javascript asp.net vue.js

Javascript:

function InitVue() {
    var vueOptions = {
        el: '#activeEvents',
        data: {
            activeEvents: []
        }
    };

    vOPTIONS = new Vue(vueOptions);
}

HTML:

<table id="activeEvents">
    <tr v-for="event in activeEvents">
        <td>{{event.serviceType}}</td>
        <td>{{event.loc}}</td>
        <td>{{event.dateLastUpdated}}</td> 
        <td>
            <!-- want a button here that executes window.open() with URL "Update.aspx?id={{event.eventID}}" -->                              
        </td>
    </tr>
</table>

我遇到了麻烦,因为您无法直接将 Vue 对象的属性插入 HTML 元素的属性,而且我无法从脚本引用 Vue 对象,因为它说它未定义。

如果您投反对票,请说明原因。

最佳答案

您应该能够使用按钮的 @click 处理程序来触发 window.open('https://yourwebsite.com/Update.aspx?id= ' + event.eventID)..

这样的事情应该有助于理解这个想法:

(因为 Stack Overflow 看起来不允许在代码片段中使用 window.openyou can check out this CodePen Mirror if you would like )

let app = new Vue({
  el: "#app",
  template: newAppTemplate(),
  data: {
    activeEvents: [{
        serviceType: "website1",
        loc: "loc1",
        dateLastUpdated: Date.now(),
        eventID: "google.com"
      },
      {
        serviceType: "website2",
        loc: "loc2",
        dateLastUpdated: Date.now(),
        eventID: "duckduckgo.com"
      },
      {
        serviceType: "website3",
        loc: "loc3",
        dateLastUpdated: Date.now(),
        eventID: "yahoo.com"
      },
    ]
  }
});

function newAppTemplate() {
  return `
    <table id="activeEvents">
        <tr v-for="event in activeEvents">
            <td>{{event.serviceType}}</td>
            <td>{{event.loc}}</td>
            <td>{{new Date(event.dateLastUpdated)}}</td> 
            <td>
                <button @click="window.open('https://' + event.eventID)">Open</button>
                <!-- want a button here that executes window.open() with URL "Update.aspx?id={{event.eventID}}" -->
            </td>
        </tr>
    </table>
`
}
table,
tr,
td {
  border: 1px solid black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js"></script>
<div id="app"></div>

关于javascript - Vue - 如何制作一个按钮列表,每个按钮都会打开一个具有不同 URL 的新窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59900179/

相关文章:

c# - 报告查看器打印?

javascript - 为什么使用 querySelector(All) 创建的变量是空的?

javascript - Web App 主屏滑动效果

javascript - CSS "position:fixed": mobile zoom

javascript - 如何更改 d3.js 中缩放行为的插值

firebase - 如何将 Firebase Firestore 数据添加到 SSR Nuxt Apps Vuex Store

vue.js - 在 vitest 中使用模拟模块

Javascript根据键合并两个对象

javascript - 如何在 JavaScript 中将服务器端标签显示更改为“阻止”?

asp.net - 数据库与文件系统中的图像