javascript - 使用 Polymer 元素渲染到通用 Canvas

标签 javascript canvas polymer

允许多个 Polymer 元素访问公共(public) Canvas 的最佳方式是什么?

<canvas id="myCanvas"></canvas>
<my-element canvas="myCanvas"></my-element>

my-element内部执行document.getElementById({{myCanvas}},然后开始绘制它。

这是最好的方法还是有更好的 MDV 类型方法?

我看到的问题是 Web 组件被封装,因此封装组件之间的标识字符串将无效。

最佳答案

你是对的,如果<canvas id="myCanvas"></canvas>位于另一个shadow dom子树中,document.getElementById('myCanvas')不会找到它。相反,您可以使用 document.querySelector('body /deep/ #myCanvas') ,但这很脆弱,只能找到第一个 #myCanvas影子树中的任何地方。

更好的方法是设置 .canvas外部属性:

<canvas id="myCanvas"></canvas>
<my-element></my-element>

document.addEventListener('polymer-ready', function() {
  document.querySelector('my-element').canvas = document.querySelector('#myCanvas');
});

我们通常做的另一件事是将元素包装在另一个 <polymer-element> 中。 。这将允许您将 canvas DOM 元素数据绑定(bind)到 my-element 的 canvas已发布的属性(属性):

<canvas id="myCanvas"></canvas>
<my-element canvas="{{$.myCanvas}}"></my-element>

关于javascript - 使用 Polymer 元素渲染到通用 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23812518/

相关文章:

javascript - 添加控件以在 Javascript Canvas 中操作动画

javascript - 单击可拖动层顶部时如何获得准确的指针位置?

javascript - polymer 不删除删除的元素

javascript - polymer - 简单的 JS 打开覆盖层

Polymer 核心图标未显示在 Firefox 上,而是显示在 Chrome 上

javascript - 如何在javascript中获取选择下拉列表的值?

javascript - 使用 System.IdentityModel.Tokens.Jwt 验证在 C# 中生成的 token

javascript - Bootstrap3 导航栏切换不适用于 requirejs

javascript - 像鼠标事件一样在触摸时检索相同的 offsetX

javascript - 使用 jQuery 编辑 externalHTML 的结果