首页 > 其他分享 >【快应用】如何在快应用中使用自定义指令

【快应用】如何在快应用中使用自定义指令

时间:2023-09-26 11:12:14浏览次数:36  
标签:el 定义 自定义 focus 指令 应用 组件

​ 【关键词】

操作DOM、自定义指令

 

【问题背景】

在快应用中,有些情况下我们需要对 DOM 元素进行访问,或者在元素创建、更新、销毁过程中处理相应的业务逻辑,通过快应用文档中现有的方法实现不了,我们需要使用自定义指令去完成我们想要的操作,这里就介绍下快应用中如何去使用自定义指令。

 

【实现方案】

1、 定义全局指令

当我们需要在多个页面或组件中使用某个自定义指令时,可以在 app.ux 中定义 directives 对象,directives 对象中可以定义多个自定义指令。定义后,在该应用下的所有页面、组件中,都可以使用这个指令。

App.ux相关代码的示例如下

<script>

  export default {

    directives: {

      focus: {

        mounted(el) {

          // 获取到el对象,在原生插入到父节点后执行focus方法获得焦点

          el.focus()

        }

      },

      // ...其他全局指令定义

    }

  }

</script>

Hello.ux中

<template>

  <div>

    <input dir:focus></input>

  </div>

</template>

上面的例子,我们在 app.ux 中定义了一个全局 focus 的指令。在页面或组件中,只需要在元素上增加 dir:focus(dir: 为自定义指令固定前缀,focus 为全局中定义的指令名称)就能应用该指令,当页面加载后, input 元素将会自动获得焦点。

2、定义页面、组件指令

页面、组件的指令定义和全局定义方式一致,同样是增加 directives 对象进行自定义指令定义。

Hello.ux

<template>

  <div>

    <text dir:textmounted="{{ message }}">message: "{{ message }}"</text>

  </div>

</template>

 

<script>

  export default {

    directives: {

      textmounted: {

        mounted(el, binding) {

          console.log(el) // text的DOM对象

          console.log(binding) // text绑定的指令信息:{name: "textmounted", data: "Hello"}

        }

      }

    },

    data: {

      message: 'Hello'

    }

  }

</script>

3、指令钩子函数

自定义指令定义对象可以提供如下的钩子函数

Mounted:所在元素创建并且插入父节点之后调用。

Update:所在元素更新时调用。如果元素同时更新了 N 个次(如同时更新了元素的 N 个属性、或 N 个样式),会调用 N 次,并且每次回调参数中都会有相应的更新信息。

Destroy:所在元素销毁后调用。

示例代码:

<template>

  <div>

    <text dir:report="{{ name }}">用户名称: {{ name }}</text>

  </div>

</template>

 

<script>

  export default {

    directives: {

      report: {

        mounted(el, binding) {

          console.log(el) // text的DOM对象

          console.log(binding) // text绑定的指令信息:{name: "report", data: "小白"}

        }

      }

    },

    data: {

      name: '小白'

    }

  }

</script>

注意:

1、 使用 model 指令需要快应用引擎版本>=1100 且 hap-toolkit 版本>=1.9.5。

2、 子组件的根节点使用指令时,不要与父组件引入组件标志位上使用同名的自定义指令。

 

标签:el,定义,自定义,focus,指令,应用,组件
From: https://www.cnblogs.com/mayism123/p/17729663.html

相关文章

  • 喵分发如何助力iOS应用顺利发布
    喵分发要助力iOS应用顺利发布,可以考虑以下几个方面:选择合适的签名服务商:签名服务是iOS应用发布过程中的重要环节。选择一家经验丰富、信誉良好的签名服务商,如喵分发公司,可以帮助您节省时间成本、降低应用发布难度,并为应用提供一定程度的安全保障。优化应用性能:在应用发布前,确保应......
  • OpenHarmony自定义构建函数:@Builder装饰器
     前面章节介绍了如何创建一个自定义组件。该自定义组件内部UI结构固定,仅与使用方进行数据传递。ArkUI还提供了一种更轻量的UI元素复用机制@Builder,@Builder所装饰的函数遵循build()函数语法规则,开发者可以将重复使用的UI元素抽象成一个方法,在build方法里调用。为了简化语言,我......
  • 前端组件通信工具-自定义Bus
    前端组件通信工具-自定义Bus在utils添加Bus//先定义一个类型,emit作为发布(传递),on作为订阅(接收)//name是事件名称,callback是一个回调函数typeBusClass={emit:(name:string)=>voidon:(name:string,callback:Function)=>voidoff:(name:string)=>voi......
  • PPT| 企业数据指标与标签体系和应用场景建设方案 P33
       本人从事咨询工作多年,二十年一线数字化规划咨询经验,提供制造业数智化转型规划服务,顶层规划/企业架构/数据治理/数据安全解决方案资料干货.  【智能制造数字化咨询】该PPT共33页,由于篇幅有限,以下为部分资料,如需完整原版 方案,点击关注下方。  数据底座建设中,需要建......
  • DBA容灾与备份恢复:闪回应用及实践(一)
    闪回应用及实践第一天:以时间戳方式恢复被勿更新数据:1.查看UNDO的空间是否充足2.询问操作发生时间23:48:48,经确认这个表中数据变化很小。如果能把这个时间点前的表中数据恢复出来,就能把问题的影响降到最低。先尝试使用闪回查询来做,依赖一些缓存空间和系统的负载,在反复确认时间后,写......
  • 4.操作卡片和OBU的指令以及流程
     用户卡认证命令流1、获取随机数:00840000042、进入1001目录:00A400000210013、读15文件:00B095002B4、计算mac:00880201+10(1字节数据长度)+16字节摘要码操作IC卡片(读15文件,卡基本信息)1、选1001:00A400000210012、读15文件:00B095002B操作IC卡片(写15文件,卡基......
  • 使用 OpenTelemetry 构建 .NET 应用可观测性(3):.NET SDK 概览
    目录前言概览opentelemetry-dotnetopentelemetry-dotnet-contribopentelemetry-dotnet-instrumentationSDK的基本使用安装依赖ResourcesResourceBuilder.CreateDefault()ResourceBuilder.CreateEmpty()TracingActivitySource&ActivityTracing模块的使用MetricsMeterProvider&......
  • 使用 Go 和 ADB 启动 Android 应用程序
    在移动应用程序开发中,有时我们需要自动启动Android应用程序以执行测试、截屏或其他自动化任务。本文将介绍如何使用Go编写一个程序,通过Android调试桥(ADB)来启动指定的Android应用程序。我们将提供完整的Go代码示例以及相应的说明。准备工作安装Go编程语言。你可以从Go......
  • 单片机原理及应用(第三章)小结
    大学生课后作业1.什么是单片机?什么是嵌入式系统单片机是一种集成了微处理器、内存、输入输出和其他外设的微型计算机系统。嵌入式系统是以应用为中心、以计算机系统为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。2.805......
  • 金蝶云星空自定义WebApi
     1、创建项目,命名规范:开发商.K3.SCM.WebApi.ServicesStub 2、添加引用 usingKingdee.BOS.ServiceFacade.KDServiceFx;usingKingdee.BOS.WebApi.ServicesStub;3、新建类,继承webapi业务抽象服务AbstractWebApiBusinessService。///<summary>///......