javascript - Aurelia:调整大小/布局更改事件以供查看?

标签 javascript canvas aurelia

有没有办法订阅 View 以观察 Aurelia 中的调整大小/布局事件?我有一个 Canvas ,我想调整大小。我想知道是否有一种“aurelia”方法可以做到这一点?

我试过:

<div ref="canvasContainer" class="widget-dial-container" resize.delegate="doresize()">
  <canvas ref="canvas" class="widget-dial-canvas" />
</div>

但它从不调用我的 doresize() 方法。

我已经尝试绑定(bind)到 DOM offsetWidth 和 offsetHeight,但这也不起作用(在 vm 中使用和不使用 @bindable canvasContainer;)

最佳答案

如 Kruga 所述,resize 事件仅在 window 本身上受支持。您可以使用 Aurelia 平台抽象层的 PLATFORM 对象以跨平台方式附加到它。您必须运行 jspm install aurelia-pal 才能获取它。如果您不担心跨平台,那么您可以只使用 window 对象。

以下模板和 VM 适合我。我对调整大小计时器实现了限制:

HTML

<template>
  <div style="height: 125px; min-width: 150px; width: 100%;" ref="canvasContainer">
    <canvas ref="canvas" width.one-way="canvasContainer.offsetWidth"></canvas>
  </div>
</template>

模板

import {PLATFORM} from 'aurelia-pal';

export class App {
  resizeTimer = null;
  resizeEventHandler = () => this.resized();

  attached() {
    this.resized();

    PLATFORM.global.addEventListener("resize", this.resizeEventHandler);
  }

  detached() {
    PLATFORM.global.removeEventListener("resize", this.resizeEventHandler);
  }

  resized() {
    clearTimeout(this.resizeTimer);

    this.resizeTimer = setTimeout(() => {
      let ctx = this.canvas.getContext("2d");

      ctx.fillStyle = "green";
      ctx.font = "30px Arial";
      ctx.fillText(`Width: ${this.canvas.width}`,10,50);
    }, 150);
  }
}

关于javascript - Aurelia:调整大小/布局更改事件以供查看?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35937020/

相关文章:

javascript - 如何在 Windows 上安装 Node js Canvas

javascript - 由于长时间运行的脚本,浏览器变得无响应 - 如何找到负责的脚本?

javascript - 如何使用路由器和内置/自定义属性在 aurelia 中创建下拉菜单?

JavaScript .toString() 默认值

javascript - 勒克森 HH :mm difference between datetimes

javascript - 如何使用 Phantomjs 向下滚动以加载动态内容

C# - Windows Phone - MaxWidth 和 MaxHeight 属性被忽略

javascript - 如何在 Phaser.js 中启用图形对象的物理特性?

aurelia - 将 humane.js 与 aurelia 结合使用

javascript - 当我将 React-router Redirect 分离到另一个组件中时,它似乎不起作用