2016-01-15 23 views
1

我迷失在继承的项目上工作:一个Java应用程序的Web前端提供其服务器上的数据。它包含很多未修正的bug,大多数情况下,可能是从迁移到Polymer 1.0,这是前端工作人员在离开前做的最后一件事。到目前为止,我已经将所有npm和bower依赖项更新为最新版本,并且已经查看了大部分自定义HTML和JavaScript部分中发生的事情,但我只知道一些基本的HTML和Java并不能推动事情向前发展。聚合物霓虹灯动画页面抛出TypeError,因为它的selectedItem未定义

在该地区的HTML结构大致是这样的:

<paper-scaffold id="scaffold" drawer-width="{{drawerWidth}}" responsive-width="{{responsiveWidth}}" mlist="{{mList}}> 
    <neon-animated-pages id="pages-blocks" class="flex" selected="{{selectedPage}}" entry-animation="{{entryAnimation}}" exit-animation="{{exitAnimation}}"> 
     <template is="dom-repeat" items="{{list}}" as="block" index-as="blockIndex"> 
      <neon-animatable> (content) </neon-animatable> 
     </template> 
    <neon-animated-pages> 
</paper-scaffold> 

<paper-scaffold><core-scaffold>派生的自定义支架。)

如预期在大多数情况下,整个玩意儿作品 - 你点击列表中的项目来选择它们,并将相应的服务器对象的内容显示在前端的其他位置 - 除了列表中的第一个条目。它是这样的:

  • 第一项选择,一旦你尝试选择后的第一个选择停留的另一个项目是正常
  • 处理,并且误差在霓虹灯的动画-pages.html抛出: Uncaught TypeError: Cannot read property 'classList' of undefined
  • 另一个项目的点击解冻选择直到第一个块被再次

选择的线引发错误是(虽然引发错误一次)

  • 从此万物是回正常,在霓虹灯动画页'_selectedChanged函数观察变量selected随每次点击选择一个新的项目而变化。它读取:

    selectedPage.classList.add('neon-animating');


    所以我去监控变量selectedPage,似乎相当多的是在项目列表上点击发生。

    当除第一个到另一个(包括第一)的任何项目的切换,_selectedChanged被调用了三次:

    1. selectedPage是不确定的,但该函数退出,因为它 找不到先前选定的网页,其中导致其停止
    2. selectedPage是一个[对象的HTMLElement]如预期的那样,函数结束没有错误
    3. selectedPage是未定义的但功能退出,因为它没有找到先前选择的p年龄这导致其停止

    当从第一切换到另一个项目,_selectedChanged叫做三次:

    • selectedPage是一个[对象的HTMLElement]如预期所有三次,并没有函数结束错误

    当从第一个到任何其他后选择的项目的切换,_selectedChanged被调用一次:

    1. selectedPage是不确定的,但以前的网页被发现,因而引发该错误

    当从一个项目到另一个开关,它看上去与正常的(三个电话,二未定义)和按预期工作,但无论如何都会抛出错误。


    selectedPage唯一的其他实例被不确定我能找到为this issue report on "more-routing",但没有路由在此前端发生。

    对不起,如果这一切都非常复杂,但我只是刚刚开始寻找网络开发和聚合物,甚至找不到一个地方开始调试,因为这么多似乎发生在我的范围之外。霓虹动画页面使用的变量都没有被“我的”代码主动分配。我很乐意提供任何可能有助于解决此问题的附加信息。

  • 回答

    0

    这不是一个答案本身,但我想我会留下至少一些见解,以防有人绊倒这个问题。

    发生了什么事是在我继承的代码混乱中,_selectedChanged上的三个调用来自三个不同的<neon-animated-pages>实例,它们都共享相同的索引,并且(通常)一次只能看到其中一个可见。他们都干扰了对方和代码的其他部分,并且在某些时候,我失去了跟踪连接修复所有的痕迹。

    我的“解决方案”是在没有动画的情况下重写代码,但事实上我们并不需要它,事实上我们想关闭它。现在一个更苗条(并评论)<paper-drawer-panel>结构连接列表和内容。