在Polymer core-animated-pages>中,Morris.js图表​​无法正确显示部分>核心动画页面>部分>卡> DIV

时间:2015-03-21 07:37:04

标签: html raphael polymer

我正在使用Polymer设计网页。核心动画页面中有一个包含卡片的部分。我有一些使用Morris.js生成图表的javascript,并将其插入上述卡片中的div。

这是问题,无论我为该div设置的宽度/高度,图表都无法正常显示。这是一个截图:显然我需要更多声誉?

link:http://i.stack.imgur.com/agI3Z.jpg

但是,如果我调整窗口大小(我启用了Morris的调整大小功能),它会正确调整大小。

http://i.stack.imgur.com/MX7Me.jpg

我尝试过使用Chart.js,但有了这个,图表根本就不会显示。我相信它不是JS的问题,因为如果我将JS复制到JSBin中,我可以使用Morris和Chart.js完美地显示图表

以下是插入morris图表的一些HTML:

<body unresolved fullbleed>
  <template is="auto-binding">
    <div style="height:100%;width:100%;position:absolute;">

      <core-animated-pages id="selector" selected="0" transitions="hero-transition cross-fade-all cross-fade">
        <section id="lighting-analysis">
          <div id="headerpanel" hero-id="header" onclick="selectPage('selector', 0)" horizontal layout>
            <div hero hero-id="header1" flex style="background-color:white; height:100px; margin-right:-3px;"></div>
            <core-image hero hero-id="header2" src="header.png" height="100px" width="100px" sizing="cover" position="center"></core-image>
            <div hero hero-id="header3" flex style="background-color:white; height:100px; margin-left:-3px"></div>
          </div>

          <core-animated-pages id="form1" selected="0" transitions="slide-from-right" cross-fade>
            <section>
              <div class="card" slide-from-right>
                //blahblahblah
              </div>
            </section>
            <section>
              <div class="card" slide-from-right>
                //blahblahblah
              </div>
            </section>

            <section>
              <div class="card" slide-from-right style="height: 600px;">
                <div horizontal layout flex cross-fade>
                  <div class="nav" flex onclick="changePage('form1',0)">
                    <core-icon icon="arrow-back"></core-icon>PREV
                  </div>
                  <div class="nav" flex style="text-align:right;" onclick="changePage('form1',1)">
                    NEXT
                    <core-icon icon="arrow-forward"></core-icon>
                  </div>
                </div>
                <p>Maintenance and Operation Cost ($)</p>

                <div id="morris-bar-chart" width="400px" height="400px"></div>

                <div id="SavingsComment" style="font-size:24px; text-align: center">
                </div>
              </div>
            </section>
          </core-animated-pages>

        </section>
        <section id="lighting-designer">
        </section>

      </core-animated-pages>        
</div>

如果我错过了一些明显的东西,我对这是一个很新的道歉,但我在这个阶段花了太多时间试图解决它,所以我认为现在是时候呼吁社区了哈哈。

谢谢, NAS

更新:好的,所以我以一种“丑陋”的方式解决了我自己的问题。我已经按下了启动生成图形的功能的按钮,该图形将显示在图形上。

我猜这个问题与raphael抓住div维度有关,而div没有显示,导致奇怪的大小值。我尝试了几种解决方法但却无法使用它们。

我有一种感觉,核心动画页面转换准备可能会在这种情况下帮助,但我担心我不知道如何使用它,并找到我能理解的例子证明是困难的。

如果有人对如何解决这个问题有任何想法,我会非常感激。虽然它现在“有效”,但我不得不为用户添加不必要的按钮按压这一事实让我的脑子痒痒。

更新2:所以,我不能不管它。

我添加了这个函数,当单击一个按钮转到显示图形的页面时会调用该函数,并传递该函数以生成图形。

      function genGraph(func) {
        $("#form1").on("core-animated-pages-transition-end", func);
      }

但后来我收到了这个错误:

Uncaught TypeError: ((m.event.special[e.origType] || (intermediate value)).handle || e.handler).apply is not a function

m.event.dispatch @ jquery-1.11.2.min.js:3
m.event.add.r.handle @ jquery-1.11.2.min.js:3
utils.fire @ polymer.js:9029
Polymer.mixin.complete @ core-animated-pages.html:394
(anonymous function) @ core-animated-pages.html:407
Job.complete @ polymer.js:8636
setTimeout (async)Job.go @ polymer.js:8621
job @ polymer.js:8647
base.job @ polymer.js:9779
Polymer.mixin.transitionEnd @ core-animated-pages.html:406
events.dispatchMethod @ polymer.js:9129
events.getEventHandler @ polymer.js:10713
utils.fire @ polymer.js:9029
Polymer.complete @ core-transition-pages.html:155

我猜我没有正确使用这个事件。但这就像我得到的那样接近。

这是来自core-animated-pages.html的代码(我认为)会触发我试图用来触发我的函数的事件:

   complete: function() {
     if (this.animating) {
       this.cancelAsync(this.animating);
       this.animating = null;
     }
     this.transitioning.forEach(function(t) {
       t.removeAttribute('animate');
     });
     this.transitioning = [];
     this._transitionElements.forEach(function(transition) {
       transition.ensureComplete(this);
     }, this);
     this.fire('core-animated-pages-transition-end');
   },

0 个答案:

没有答案