将值从一个属性移到另一个

时间:2018-12-05 00:55:07

标签: javascript d3.js

我正在使用D3的包装器,该包装器会生成带有使用x / y属性放置的轴标签的图形,这使它们很难正确旋转。我想更改行为而无需编辑正在使用的库。

我想转型:

<text x="690" y="344" dy="12" style="text-anchor: middle;">foo</text>

进入:

<text dy="12" style="text-anchor: end;" transform="translate(690,344) rotate(90)">foo</text>

我有正确的选择器,可以更改静态部分,但是在这种情况下,如何从另一个属性中引用一个属性?

chart.selectAll('g.cols.axis text')
  .attr('x', null)
  .attr('y', null)
  .style("text-anchor", "end")
  .attr('transform', 'translate(?,?) rotate(90)')

如何将x / y值复制到翻译部分?

2 个答案:

答案 0 :(得分:1)

执行此操作的最简单方法可能是更改方法调用的顺序。您可以通过向设置器提供null来擦除属性,因此在需要它们设置转换值时使它们不可用。您可以重新排序呼叫,以首先设置仍具有xy属性的转换,然后再删除这些属性。

d3.select("svg").selectAll('text')
  .style("text-anchor", "end")
  .attr('transform', function() {
     let elem = d3.select(this);
     return `translate(${elem.attr("x")},${elem.attr("y")}) rotate(90)`;
  })
  .attr('x', null)
  .attr('y', null);
<script src="https://d3js.org/d3.v5.js"></script>
<svg>
  <text x="60" y="30" dy="12" style="text-anchor: middle;">foo</text>
</svg>
 

答案 1 :(得分:-1)

我认为不链接可以做到这一点。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 
</IfModule>
<IfModule !mod_rewrite.c>
 ErrorDocument 404 index.php
</IfModule>