javascript - ember-cli 未关闭的元素 `d.y` 导致 ember 应用程序崩溃

标签 javascript ember.js d3.js ember-cli

我在 ember-cli 应用程序中有以下文件 bubbles.hbs ,其中包含以下代码,但我收到以下错误:未封闭的元素 d.y(第 56 行)。 我尝试用谷歌搜索这个问题,但找不到解决方案。

更新

这是我制作的 fiddle https://jsfiddle.net/395jthv9/1/下面的代码,似乎正在工作。

<script type="text/javascript">
// #5b342f
var beerBackground = d3.select("body").transition()
   .duration(2000)
   // carter wilson color = FFE152
   .style("background-color","#f5d037");
</script>
<script type="text/javascript">

w = window.innerWidth,
h = window.innerHeight;

    var svg = d3.select("body").append("svg:svg")
        .attr("width", w)
        .attr("height", h);

    var circle = svg.selectAll("circle")
        .data(d3.range(70).map(function(datum,interval) {
          return {
            x: interval*20,
            y: 0,
            // stroke-width="1",
            dx: 5,
            dy: -3 * (Math.random()+1),
            mu: Math.random()*2
          };
        }))
      .enter().append("svg:circle")
        .attr("r", 2.5)
        .attr("fill","#FFEFA0") // fill
        .attr("stroke","white") // stroke
       .attr("stroke-width", "1")
        // .attr("opacity",".0.2")
        .style("stroke-opacity", "1.0")
        .style("fill-opacity", ".5");

    var text = svg.append("svg:text")
        .attr("x", 20)
        .attr("y", 20);

    var start = Date.now(),
        frames = 0;

    d3.timer(function() 
    {

  // Update the circle positions.
  circle
      .attr("cx", function(d) {
        d.x += Math.random()*3*Math.sin(Math.random()*3*d.x + Math.random()*10); if (d.x > w) d.x -= w; else if (d.x < 0) d.x += w; return d.x; })
      .attr("cy", function(d) {
        d.y += d.dy ; 
        if (d.y > h) {
          d.y -= h; 
        }
        // And the below line is giving me an error.
        else if (d.y < 0) {
         d.y += h; 
        }
          return d.y; 
      })
      .attr("r",function(d) {
        return (d.y < 100) ? d3.select(this).attr("r") : d.mu*500/d.y;
      }); --}}

});
</script>

最佳答案

您不应该将 JavaScript 代码放在 .hbs 中文件使用 <script>标签。将此代码移至 JavaScript 文件。

因此,将该代码从 bubbles.hbs 移出至bubbles.js 。例如,您可以在 didInsertElement 中执行该逻辑。如果它是组件,则 Hook ,或者在 init 之后事件。

关于javascript - ember-cli 未关闭的元素 `d.y` 导致 ember 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33579101/

相关文章:

javascript - 自定义嵌入了 iframe 的谷歌地图

javascript - 隔离 AngularJS 范围、放弃依赖注入(inject)、可重用组件

javascript - 嵌入式 YouTube 视频在本地服务器上不起作用

javascript - 如何在 emberjs 中使用 salvattore

javascript - 访问 topojson 对象以更改 d3.js 中的 map 国家/地区属性

css - 如何解决 d3js TreeMap 被剪裁

javascript - Jquery不显示从db获取的值

ember.js - 如何集成 amcharts 和 Ember.js?

unit-testing - 具有关系 'needs' 的 Ember-cli 单元测试

javascript - 带有对象条目的 d3.js forceSimulation()