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

一、Behaviors


快手短视频广告投放-behaviors是用于组件间代码共享的特性,类似于一些编程语言中的“mixins”或“traits”。每个 behavior 可以包含一组属性、数据、生命周期函数和方法。组件引用它时,它的属性、数据和方法会被合并到组件中,生命周期函数也会在对应时机被调用。 每个组件可以引用多个 behavior ,behavior 也可以引用其他 behavior 。


1.Behavior(Object object)

注册一个 behavior,接受一个 Object 类型的参数。


参数:

定义段 类型 是否必填 描述
properties Object Map 同组件的属性
data Object 同组件的数据
methods Object 同自定义组件的方法
behaviors String Array 引入其它的 behavior
created Function 生命周期函数
attached Function 生命周期函数
ready Function 生命周期函数
moved Function 生命周期函数
detached Function 生命周期函数


代码示例

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

快手广告组件中使用

组件引用时,在 behaviors 定义段中将它们逐个列出即可。


代码示例

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

在上例中, my-component 组件定义中加入了 my-behavior ,而 my-behavior 中包含有 myBehaviorProperty 属性、 myBehaviorData数据字段、 myBehaviorMethod 方法和一个 attached 生命周期函数。这将使得 my-component中最终包含 myBehaviorProperty 、myProperty 两个属性, myBehaviorData 、myData两个数据字段,和myBehaviorMethod、myMethod 两个方法。当组件触发attached生命周期时,会依次触发my-behavior 中的 attached 生命周期函数和 my-component 中的attached生命周期函数。


2.快手短视频推广-字段的覆盖和组合规则

组件和它引用的 behavior 中可以包含同名的字段,对这些字段的处理方法如下:


  • 如果有同名的属性或方法,组件本身的属性或方法会覆盖 behavior 中的属性或方法,如果引用了多个 behavior ,在定义段中靠后 behavior 中的属性或方法会覆盖靠前的属性或方法;

  • 如果有同名的数据字段,如果数据是对象类型,会进行对象合并,如果是非对象类型则会进行相互覆盖;

  • 生命周期函数不会相互覆盖,而是在对应触发时机被逐个调用。如果同一个 behavior 被一个组件多次引用,它定义的生命周期函数只会被执行一次。


3.内置 behaviors

自定义组件可以通过引用内置的 behavior 来获得内置组件的一些行为。


代码示例

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


在上例中,ks://form-field 代表一个内置 behavior ,它使得这个自定义组件有类似于表单控件的行为。内置behavior 往往会为组件添加一些属性。在没有特殊说明时,组件可以覆盖这些属性来改变它的 type或添加 observer。

ks://form-field.使自定义组件有类似于表单控件的行为。 form 组件可以识别这些自定义组件,快手广告开户-并在 submit事件中返回组件的字段名及其对应字段值。这将为它添加以下两个属性。


属性名 类型 描述
name String 在表单中的字段名
value 任意 在表单中的字段值


ks://form-field-group

使 form 组件可以识别到这个自定义组件内部的所有表单控件。例如,页面的结构如下:


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


组件 custom-comp 自身结构如下:


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


如果组件 custom-comp 配置有:


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


此时,表单的 submit 事件的 value 中将包含 last 和 leaf两个字段。

ks://form-field-button

使 form 组件可以识别到这个自定义组件内部的 button 。快手广告如果自定义组件内部有设置了 form-type 的 button ,它将被组件外的 form 接受。例如,页面的结构如下:


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


组件 custom-comp 自身结构如下:


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


如果组件 custom-comp 配置有:


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


ks://component-export

使自定义组件支持 export 定义段。这个定义段可以用于指定组件被 selectComponent调用时的返回值。

快手信息流广告未使用这个定义段时,selectComponent将返回自定义组件的 this (插件的自定义组件将返回 null )。使用这个定义段时,将以这个定义段的函数返回值代替。



代码示例

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

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

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


组件间关系

定义和使用组件间关系

有时需要实现这样的组件:

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


快手推广账户-这个例子中, custom-ul 和 custom-li 都是自定义组件,它们有相互间的关系,相互间的通信往往比较复杂。此时在组件定义时加入relations定义段,可以解决这样的问题。示例:


Component({

  relations: {

    './custom-li': {

      type: 'child', // 关联的目标节点应为子节点

      linked: function(target) {

        // 每次有custom-li被插入时执行,target是该节点实例对象,触发在该节点attached生命周期之后

      },

      linkChanged: function(target) {

        // 每次有custom-li被移动后执行,target是该节点实例对象,触发在该节点moved生命周期之后

      },

      unlinked: function(target) {

        // 每次有custom-li被移除时执行,target是该节点实例对象,触发在该节点detached生命周期之后

      }

    }

  },

  methods: {

    _getAllLi: function(){

      // 使用getRelationNodes可以获得nodes数组,包含所有已关联的custom-li,且是有序的

      var nodes = this.getRelationNodes('path/to/custom-li')

    }

  },

  ready: function(){

    this._getAllLi()

  }

})

// path/to/custom-li.js

Component({

  relations: {

    './custom-ul': {

      type: 'parent', // 关联的目标节点应为父节点

      linked: function(target) {

        // 每次被插入到custom-ul时执行,target是custom-ul节点实例对象,触发在attached生命周期之后

      },

      linkChanged: function(target) {

        // 每次被移动后执行,target是custom-ul节点实例对象,触发在moved生命周期之后

      },

      unlinked: function(target) {

        // 每次被移除时执行,target是custom-ul节点实例对象,触发在detached生命周期之后

      }

    }

  }

})


注意:必须在两个组件定义中都加入 relations 定义,否则不会生效。

关联一类组件

有时,需要关联的是一类组件,如:


<custom-form>

  <view>

    input

    <custom-input></custom-input>

  </view>

  <custom-submit> submit </custom-submit>

</custom-form>



custom-form 组件想要关联 custom-input 和 custom-submit 两个组件。此时,如果这两个组件都有同一个 behavior:


// path/to/custom-form-controls.js

module.exports = Behavior({

  // ...

})

// path/to/custom-input.js

var customFormControls = require('./custom-form-controls')

Component({

  behaviors: [customFormControls],

  relations: {

    './custom-form': {

      type: 'ancestor', // 关联的目标节点应为祖先节点

    }

  }

})

// path/to/custom-submit.js

var customFormControls = require('./custom-form-controls')

Component({

  behaviors: [customFormControls],

  relations: {

    './custom-form': {

      type: 'ancestor', // 关联的目标节点应为祖先节点

    }

  }

})


则在relations关系定义中,可使用这个 behavior 来代替组件路径作为关联的目标节点:


// path/to/custom-form.js

var customFormControls = require('./custom-form-controls')

Component({

  relations: {

    'customFormControls': {

      type: 'descendant', // 关联的目标节点应为子孙节点

      target: customFormControls

    }

  }

})


relations 定义段

relations 定义段包含目标组件路径及其对应选项,可包含的选项见下表。

选项 类型 是否必填 描述
type String 目标组件的相对关系,可选的值为 parent 、 child 、 ancestor 、 descendant
linked Function 关系生命周期函数,当关系被建立在页面节点树中时触发,触发时机在组件 attached 生命周期之后
linkChanged Function 关系生命周期函数,当关系在页面节点树中发生改变时触发,触发时机在组件 moved 生命周期之后
unlinked Function 关系生命周期函数,当关系脱离页面节点树时触发,触发时机在组件 detached 生命周期之后
target String 如果这一项被设置,则它表示关联的目标节点所应具有的 behavior,所有拥有这一 behavior 的组件节点都会被关联




其实投放快手广告开户是非常简单的,一般我们自己开户会比较繁琐,而且会有一些疏忽,或者不知道需要的资质,而延误了广告上线的时间,所以我们都会找到快手广告代理,比如王尘宇广告有限公司,只需要提供行业相关资质就可以了,开户非常快,应该需要1-3天的时间,自己开户可能就需要更久了,巨宣广告咨询电话是:15502933391


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

相关阅读

添加新评论