如何使表格中的整行像ngtable(angularjs)中的超链接(在新选项卡等中打开)一样

Posted

技术标签:

【中文标题】如何使表格中的整行像ngtable(angularjs)中的超链接(在新选项卡等中打开)一样【英文标题】:How to make whole row in table act like hyperlink (open in new tab etc) in ngtable (angularjs) 【发布时间】:2020-07-26 00:24:30 【问题描述】:

我正在使用 AngularJS 和 ngtable。

每次创建表格时,我都会将ui-sref 放在<tr> 元素上,如下所示:

<tr ng-repeat="element in $data" ui-sref="app.some.details.info(id: element.id)">
  <td>element.name</td>
  <td>element.info</td>
</tr>

但是,这不允许用户在新选项卡中打开条目,右键单击它以在新窗口中打开,等等(它不像 &lt;a&gt;

有什么方法可以让我可以通过在新选项卡/窗口中打开的选项使整行可点击(如案例)

【问题讨论】:

【参考方案1】:

您可以使用函数$state.hrefwindow.open 来实现。

也可以使用变量来控制是否新建标签:

// <tr ng-repeat="element in $data" ng-click="navigateTo(element.id, false)"> -- Same Tab
<tr ng-repeat="element in $data" ng-click="navigateTo(element.id, true)">
  <td>element.name</td>
  <td>element.info</td>
</tr>

...

//In the controller
$scope.navigateTo = function(id, inNewTab)
  if(inNewTab) // New tab
     var url = $state.href('app.some.details.info', id: id);
     window.open(url , "_blank")
   else  // Same tab
     $state.go('app.some.details.info', id: id);
  

【讨论】:

在这种情况下,它总是会在新标签页中打开,对吧?就像我说过的那样,我希望有一个在新标签中打开的选项,而不是总是在新标签中打开 @lukaszrys 您可以为此添加一个变量。检查编辑 感谢您的回复。虽然这是真的,但我希望它可以由用户控制,而不是由开发人员控制。我想如果有人按住 CTRL 按钮,您的解决方案可以适应在新选项卡中打开,但它仍然不涵盖 &lt;a&gt; 行为 @lukaszrys 您是否尝试将行包装在&lt;a&gt; 标记内并将ui-sref 设置为? 你的意思是把&lt;td&gt;元素放在&lt;a&gt;中吗?是的,我做到了,但它被忽略了。一旦它满足我的问题/疑虑,我就会接受它。【参考方案2】:

哟!如果您希望您的行内容像 &lt;a /&gt; 元素一样,也许您可​​以用锚点包装您的 &lt;td&gt; 内容。像这样的:

<tr ng-repeat="element in $data" ui-sref="app.some.details.info(id: element.id)">
  <td>
    <a href="#" title="...">element.name</a>
  </td>
  <td>
    <a href="#" title="...">element.info</a>
  </td>
</tr>

您还可以创建一些自定义 javascript 来重新创建 &lt;a /&gt; 行为。为每个表格行创建点击监听器并使用window.location.href = ...

【讨论】:

是的,这是一种解决方法,但仍然不是超级优雅的方法

以上是关于如何使表格中的整行像ngtable(angularjs)中的超链接(在新选项卡等中打开)一样的主要内容,如果未能解决你的问题,请参考以下文章

使检票口数据表的整行可点击

如何使 vim 语法突出显示整行?

EXCEL如何从单元格选中到它所在的整行

如何匹配 Notepad++ 中的整行以进行搜索/替换?

如何根据列中的某个值为 ag 网格中的整行提供背景颜色?

Excel中删除含有空值的整行或是整列