快手广告投放-快手小程序(开发-框架)10

一、快手信息流广告投放-组件之间通信与事件


1.快手短视频广告组件间通信

组件间的基本通信方式有以下几种。


ksml 数据绑定:用于父组件向子组件的指定属性设置数据,仅能设置 JSON 兼容数据(自基础库版本 2.0.9 开始,还可以在数据中包含函数)。具体在 组件模板和样式 章节中介绍。

事件:用于子组件向父组件传递数据,可以传递任意数据。

如果以上两种方式不足以满足需要,父组件还可以通过 this.selectComponent 方法获取子组件实例对象,这样就可以直接访问组件的任意数据和方法。


2.快手推广账户开通-监听系统

事件系统是组件间通信的主要方式之一。自定义组件可以触发任意的事件,引用组件的页面可以监听这些事件。关于事件的基本概念和用法,参见 事件 。

监听自定义组件事件的方法与监听基础组件事件的方法完全一致:

代码示例

<!-- 当自定义组件触发“myevent”事件时,调用“onMyEvent”方法 -->

<component-tag-name bindmyevent="onMyEvent" />

<!-- 或者可以写成 -->

<component-tag-name bind:myevent="onMyEvent" />



Page({

  onMyEvent: function(e){

    e.detail // 自定义组件触发事件时提供的detail对象

  }

})


3.快手广告平台-触发事件

自定义组件触发事件时,需要使用 triggerEvent 方法,指定事件名、detail 对象和事件选项:

代码示例



<!-- 在自定义组件中 -->

<button bindtap="onTap">点击这个按钮将触发“myevent”事件</button>  

Component({

  properties: {},

  methods: {

    onTap: function(){

      var myEventDetail = {} // detail对象,提供给事件监听函数

      var myEventOption = {} // 触发事件的选项

      this.triggerEvent('myevent', myEventDetail, myEventOption)

    }

  }

})


触发事件的选项包括:

选项名 类型 是否必填 默认值 描述
bubbles Boolean false 事件是否冒泡
composed Boolean false 事件是否可以穿越组件边界,为 false 时,事件将只能在引用组件的节点树上触发,不进入其他任何组件内部
capturePhase Boolean false 事件是否拥有捕获阶段

关于冒泡和捕获阶段的概念,请阅读 事件 章节中的相关说明。


快手广告投放-快手小程序(开发-框架)10


代码示例

// 页面 page.ksml

<another-component bindcustomevent="pageEventListener1">

  <my-component bindcustomevent="pageEventListener2"></my-component>

</another-component>  

// 组件 another-component.ksml

<view bindcustomevent="anotherEventListener">

  <slot />

</view>  

// 组件 my-component.ksml

<view bindcustomevent="myEventListener">

  <slot />

</view>

// 组件 my-component.js

Component({

  methods: {

    onTap: function(){

      this.triggerEvent('customevent', {}) // 只会触发 pageEventListener2

      this.triggerEvent('customevent', {}, { bubbles: true }) // 会依次触发 pageEventListener2 、 pageEventListener1

      this.triggerEvent('customevent', {}, { bubbles: true, composed: true }) // 会依次触发 pageEventListener2 、 anotherEventListener 、 pageEventListener1

    }

  }

})

组件生命周期

组件的生命周期,指的是组件自身的一些函数,这些函数在特殊的时间点或遇到一些特殊的框架事件时被自动触发。

其中,最重要的生命周期是 created attached detached ,包含一个组件实例生命流程的最主要时间点。

组件实例刚刚被创建好时, created 生命周期被触发。此时,组件数据 this.data 就是在Component 构造器中定义的数据data。 此时还不能调用 setData 。 通常情况下,这个生命周期只应该用于给组件 this添加一些自定义属性字段。 在组件完全初始化完毕、进入页面节点树后, attached 生命周期被触发。快手广告账户开通后,此时, this.data 已被初始化为组件的当前值。这个生命周期很有用,绝大多数初始化工作可以在这个时机进行。 在组件离开页面节点树后, detached 生命周期被触发。退出一个页面时,如果组件还在页面节点树中,则 detached 会被触发。 定义生命周期方法 生命周期方法可以直接定义在 Component构造器的第一级参数中。


代码示例 


Component({

  lifetimes: {

    attached: function() {

      // 在组件实例进入页面节点树时执行

    },

    detached: function() {

      // 在组件实例被从页面节点树移除时执行

    },

  },

  // 以下是旧式的定义方式,可以保持对 <2.2.3 版本基础库的兼容

  attached: function() {

    // 在组件实例进入页面节点树时执行

  },

  detached: function() {

    // 在组件实例被从页面节点树移除时执行

  },

  // ...

})

在 behaviors 中也可以编写生命周期方法,同时不会与其他 behaviors 中的同名生命周期相互覆盖。但要注意,如果一个组件多次直接或间接引用同一个 behavior ,这个 behavior 中的生命周期函数在一个执行时机内只会执行一次。


可用的全部生命周期如下表所示。

生命周期 参数 描述
created 在组件实例刚刚被创建时执行
attached 无 在组件实例进入页面节点树时执行
ready 在组件在视图层布局完成后执行
moved 在组件实例被移动到节点树另一个位置时执行
detached 在组件实例被从页面节点树移除时执行
error Object Error 每当组件方法抛出错误时执行


组件所在页面的生命周期

还有一些特殊的生命周期,它们并非与组件有很强的关联,但有时组件需要获知,以便组件内部处理。快手广告平台这样的生命周期称为“组件所在页面的生命周期”,在 pageLifetimes 定义段中定义。其中可用的生命周期包括:

生命周期 参数 描述
show 组件所在的页面被展示时执行
hide 组件所在的页面被隐藏时执行
resize Object Size 组件所在的页面尺寸变化时执行


代码示例

Component({

  pageLifetimes: {

    show: function() {

      // 页面被展示

    },

    hide: function() {

      // 页面被隐藏

    },

    resize: function(size) {

      // 页面尺寸变化

    }

  }

})


文章均来自互联网如有不妥请联系作者删除QQ:314111741 地址:http://www.mqs.net/post/8886.html

相关阅读

添加新评论