You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Knockout的data-bind实现按钮链接在新标签页打开

解决Knockout绑定href时target="_blank"不生效的问题

我太懂你的烦恼了——既要靠Knockout的data-bind传递SN参数,又得让链接在新标签页打开,直接加target还报错。这里有几个靠谱的解决方案,你可以试试:

方案1:把target放进attr绑定对象里

你之前在data-bind里加target失效,大概率是写法不对。正确的做法是把target和href一起放在attr的对象配置中,Knockout会同时渲染这两个属性:

<a data-bind="attr: {
    href: '@Url.Action(\"Data\", \"Report\")/?serialNumber=' + SN(),
    target: '_blank'
}" class="btn btn-warning createNew"> View Report </a>

这样既保留了参数传递的逻辑,又能让链接在新标签页正常打开。

方案2:用click绑定手动控制新标签页打开

如果方案1还是有问题,可以换个思路,通过click事件来接管跳转逻辑,同时保留href的参数绑定:

<a data-bind="
    attr: {href: '@Url.Action(\"Data\", \"Report\")/?serialNumber=' + SN()},
    click: function() { 
        window.open($(this).attr('href'), '_blank'); 
        return false; 
    }
" class="btn btn-warning createNew"> View Report </a>

这里的return false是为了阻止标签的默认跳转行为,让我们手动调用的window.open来完成新标签页打开的操作。

方案3:原生target配合新版Knockout

如果你偏好把target写在标签上,可以直接给加target="_blank",但要确保你的Knockout版本是较新的——旧版本对原生属性和data-bind绑定共存的场景可能有处理bug。如果项目允许升级Knockout,这个方法最简单直接。

这些方案都能保留你需要的参数传递功能,同时实现新标签页打开的需求,你可以根据项目情况选最顺手的一种。

内容的提问来源于stack exchange,提问作者Alex K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:41:17