computed vue 不 触发_vue与canvas绘制简易时钟

利用Vue特性与Cavnas的API绘制简易时钟

模块作用域、computed的灵活运用,以及CSS的border边框处理。

实例代码

从template,到css,再到详细的js逻辑代码。

html

里面放置一个canvas,我们假设宽高都是200px,则:

css

4bf2e89375654e1257e19a007bbc6338.png

这里主要是利用了css天然的dashed虚线边框来模拟时钟的刻度。

至此效果如下:

f7647c6cd936604ad7cd75fe4b937357.png

js

data

8553b6565ae4e88372ce57321baaeeb8.png

这里使用一个date的data来控制变化,从而自动触发与之相关的computed字段,并在computed里面触发绘制函数。


computed

dbb2544a275eb36bcebc80773757e70d.png

这里需要注意,最好像上面那样提供一个result变量,传给函数用,否则就可能在函数里面再次调用this.time,那这样就死循环了。


methods

e47f2d8b28bc87d75c5dc3b569044905.png

上面注意两点:

  1. 如果有些变量或DOM,只会获取一次,并且与$vue实例无关,那么可以考虑放在模块变量中,不用什么都绑定在data上,算是一种分工优化。
  2. canvas的save与restore在这里使用是非常重要的东西。

其他就是常规的代码计算与逻辑。

无外乎,mounted时候主动触发一个this.date的值,并且后面每秒获取一次,这样就可以触发this.date这个computed,于是有触发绘制函数drawCanvas,一条线下来,相当于纯自动,感觉还是很棒的。

最终效果

4e4b4b3f8377196adab689bb478f2cd4.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值