javascript - Polymer如何异步渲染<template>而不影响与用户的交互

标签 javascript polymer

我的页面有几个巨大的<template> ,只会在任何时候渲染和显示。但是当改变<template>时渲染需要太长时间。例如:

<polymer-element name = "my-element">
  <template>
   <template if = "{{render == '#1'}}">
      <!--Many elements, takes long time to render-->
   </template>
   <template if = "{{render == '#2'}}">
      <!--Many elements, takes very long time to render-->
   </template>
   <paper-button on-click = "{{changeRender}}"></paper-button>
  </template>
  <script>
    Polymer({
      render: '#1',
      changeRender: function() {
        this.render = '#2';
     }
    });
 </script>
</polymer-element>

当用户点击按钮时,纸张的波纹出现,但卡住并一直停留到 <template if = "{{render == '#2'}}">呈现。我尝试将代码更改为:

changeRender: function() {
  var obj = this;
  this.async(function() {
    obj.render = '#2';
  }, null, 300);
}

现在不会卡了,但是时间延迟对用户来说有点不友好,有没有人有更好的解决方案?谢谢!

最佳答案

这似乎与 https://github.com/Polymer/paper-ripple/issues/10 有关.

您可以做的一件事是在激活模板之前等待波纹动画完成:

<paper-button on-core-transitionend="{{changeRender}}"></paper-button>

changeRender: function() {
  this.render = '#2';
}

关于javascript - Polymer如何异步渲染<template>而不影响与用户的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26467902/

相关文章:

javascript - jQuery 使图像变大

javascript - 从 Iron-List 内的元素读取数据属性

forms - polymer + 表单 POST 数据

javascript - 尝试将一个 polymer 元素附加到另一个 polymer 元素中

javascript - Meteor:未从 app/lib/_constants.js 中获取全局常量

javascript - 删除行时jqgrid错误

JavaScript 获取网站 URL

javascript - firebase 数据库中的图像上传在文件上传进度中给出 "NAN"

polymer - 观看并重新加载 polymer 服务/polyserve?

polymer - 使用纸质输入输入时铁表单未提交