【Svelte】-(7)绑定|Each 块绑定 / audio video 媒体标签绑定 / client offset 尺寸绑定 / this / 组件绑定

简介: 【Svelte】-(7)绑定|Each 块绑定 / audio video 媒体标签绑定 / client offset 尺寸绑定 / this / 组件绑定

Each 块绑定


您也可以在 Each 的过程中使用。


不过需要注意的是,与这些 <input> 交互会改变数组。当要使用不可变数据,应该去避免使用这些绑定,并且改用事件来处理这些内容。

<script>
  let items = [{}, {}, {}]
</script>
{#each items as item,i}
  <div>
    <p>
      {i}:<input bind:value={item.input}>
    </p>
    <b>
      value: {item.input}
    </b>
  </div>
{/each}

14.png

尽管没有定义 item.input,但还是可以使用


媒体标签绑定


<audio> 和 <video> 标签也有许多可绑定属性。


只读属性

属性 类型
duration 视频的总时长,以秒为单位
buffered {start, end} 数组对象
seekable {start, end} 数组对象
played {start, end} 数组对象
seeking boolean
ended boolean

双向绑定

属性 类型
currentTime 视频当前播放位置,以秒为单位
playbackRate 视频播放速度,正常是 1

paused

是否已暂停

volume

音量,.0 到 1

muted 是否被暂停


视频还有独特的 videoWidth 和 videoHeight 可以绑定,效果当然不言而喻。


尺寸绑定


每个 block(块级)元素都有、clientWidth 、 clientHeight 和 offsetWidth 、 offsetHeight。


当然都是只读的。

<script>
  let size = 25
  let oX, oY
</script>
<input type=range min=10 max="50" bind:value={size}>
<div>
  <span
    style="font-size: {size}px;"
    bind:offsetWidth={oX}
    bind:offsetHeight={oY}
  >
    我想养只猫
</span>
</div>
<p>
  offset width: <b>{oX}</b>px,
  offset height: <b>{oY}</b>px
</p>


15.png

this


只读 this 可以绑定于每个元素和组件,而且可以获取对 <canvas> 渲染元素的引用。


请注意,在组件挂载之前的值将是undefined,因此我们将逻辑放在 onMount 生命周期函数中。


生命周期在后面的文章会提到。

<script>
  import { onMount } from 'svelte'
  let t = ''
  console.log('挂载前,this内容',t)
  onMount(() => {
    console.log('挂载后,this内容',t)
  })
</script>
<div bind:this={t}>hi</div>

16.png

组件绑定


就像你可以绑定到 DOM 元素的属性一样,你也可以绑定到组件的 props,也可以绑定到组件实例本身,来使用组件内导出的内容。


来看一个示例:


Tips.svelte

<script>
  let tip = null
  export function show(content) {
    tip = content
  }
</script>
{#if tip !== null}
  <div class="tip">
    {tip}
  </div>
{/if}
<style>
  .tip {
    width: 100%;
    height: 40px;
    background: rgb(234, 245, 255);
    border-radius: 5px;
    display: flex;
    justify-content: center;
    align-items: center;
  }
</style>


App.svelte

<script>
  import Tips from './Tips.svelte';
  let t;
</script>
<Tips bind:this={t} />
<button on:click={() => t.show('hi')}>Show 'hi'</button>

17.png

目录
相关文章
|
11月前
|
图形学
【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身
本文介绍如何在Unity3D中实现角色“上身动画”与“下身动画”的分离控制,使角色在执行拔枪、射击等动作时,下身可独立进行移动动画,提升游戏动画灵活性与玩家体验。内容包含创建动画器、配置动画、设置Avatar Mask等步骤,并附测试效果。后续将讲解IK使用,使角色持枪更自然。
379 9
|
存储 监控 druid
Druid、ClickHouse、Doris、StarRocks 的区别与分析
本文对比了 Druid、ClickHouse、Doris 和 StarRocks 四款大数据分析引擎。它们均为 OLAP 引擎,采用列式存储和分布式架构,适用于海量数据分析。Druid 擅长实时分析与高并发查询;ClickHouse 以超高性能著称,适合复杂查询;Doris 提供易用的 SQL 接口,性能均衡;StarRocks 则以其极速查询和实时更新能力脱颖而出。各引擎在数据模型、查询性能、数据更新和存储方面存在差异,适用于不同的业务场景。选择时需根据具体需求综合考虑。
8186 20
|
安全 Linux 数据处理
Linux命令shred详解:数据安全删除的艺术
`shred`是Linux下用于安全删除文件的命令,它通过多次随机覆盖确保数据无法恢复。工作原理包括默认三次的覆盖,用户可自定义次数。主要特点有:多次覆盖、可定制、灵活操作和安全删除。示例:`shred -n 5 -z -v -u file.txt`(覆盖5次,填充0,删除文件)。使用时注意确认文件、备份数据、检查权限和文件系统兼容性。最佳实践是结合`rm`使用,根据敏感度选择覆盖次数。
|
存储 Linux 网络安全
如何在 Linux 中删除 SSL 证书和 SSH 密码?
如何在 Linux 中删除 SSL 证书和 SSH 密码?
1055 1
如何在 Linux 中删除 SSL 证书和 SSH 密码?
|
前端开发 开发者
深入解析CSS样式表的优先级
深入解析CSS样式表的优先级
511 1
|
关系型数据库 MySQL 程序员
MYSQL数据库设计规范与原则
MYSQL数据库设计规范与原则
858 0
|
Java 测试技术 C#
selenium_自动登录csdn
selenium_自动登录csdn
291 0
|
运维 应用服务中间件 Shell
学习ansible常用模块这篇就够了(剧本)(一)
学习ansible常用模块这篇就够了(剧本)
819 0
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件及常用命令
MySQL导入.sql文件及常用命令 转自:http://blog.csdn.net/muziduoxi/article/details/6091202  在MySQL Qurey   Brower中直接导入*.sql脚本,是不能一次执行多条sql命令的,在mysql中执行sql文件的命令: mysql&gt; source   d:/mypro
2484 0
|
数据库 Windows ice
Windows Embedded Standard 7技术亮点
体验新一代WinCE,参与调查,赢大奖http://www.msembed.com/newsletter/201102/Compact7.

热门文章

最新文章