美文网首页
自定义组件向页面传递数据、样式和事件

自定义组件向页面传递数据、样式和事件

作者: GaoXiaoGao | 来源:发表于2020-12-11 14:02 被阅读0次

1.向自定义组件传递数据

首先在自定义组件的js文件中定义要传递的属性

Component({
  /**
   * 组件的属性列表
   * title为要传递的数据定义字段
   */
  properties: {

    title:{
       type:String,
       value:'默认的标题',
       observer:function(newVal,Oldval){
         console.log(newVal);
         console.log(Oldval);
       }
    },
  },

})

组件的内容如下,标题中没有写死,而是{{title}}

<view class='title'>{{title}}</view>
<view class="content">我是内容</view>

在其他页面使用,首先在其他页面的json文件中注册

{
  "usingComponents": {
     "myprop":"/components/myprop/myprop"
  }
}

在其他页面使用时通过title向自定义组件传递数据

<myprop title="哈哈哈哈"/>
<myprop title="嘿嘿" />
<myprop title="呵呵" />

2.向自定义的组件传递样式

首先在自定义组件的 js 文件中定义样式传递使用的字段

Component({
  //titleclass为定义的名称
  externalClasses:['titleclass'],
})

然后在自定义的组件页面中写好

<view class='title titleclass'>{{title}}</view>
<view class="content">我是内容</view>

最后在其他页面中使用时

<myprop title="哈哈哈哈" titleclass="red" />
<myprop title="嘿嘿"  titleclass= "green" />
<myprop title="呵呵" titleclass= "blue"/>

red / green / blue分别为在使用的页面的wxss页面中定义的样式

3.自定义组件传递事件

首先需要在自定义组件中将事件发出,比如点击按钮后

//以下为自定义组件中的button
<button size="mini" bindtap="btnclick">+1</button>

然后在btnclick方法中将事件发出,发出的事件名为increment

Component({
  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {

  },

  /**
   * 组件的方法列表
   */
  methods: {

    btnclick(){
      //第一个参数为发出的事件名,第二个参数是传递的数据,按对象传递,第三个参数是设置选项
      this.triggerEvent('increment',{name:'xiaoming',sex:1},{})
    }

  }
})

最后,在其他页面使用时监听发出的事件

<myevent bind:increment="handleIncrement"/>

在方法handleIncrement方法中处理自定义事件发出来的事件和传递过来的数据

 handleIncrement(event){
    this.setData({
      counter:this.data.counter+1
    })
    //event中有自定义组件传递过来的数据
    console.log(event);
  },

4.直接调用组件修改数据或直接调用组件内的方法

有一个组件名字叫 Iamcomponent,在某个页面中使用如下
<Iamcomponent class="sel-class" id="sel-id"></Iamcomponent>

要修改组件内的数据或调用组件中的方法,首先通过class或id得到组件对象,
然后再修改数据或调用方法

    handleIncrement(event){
    //修改my-sel中的counter数据
    //1.通过class或id得到组件对象
    // const Iamcomponent = this.selectComponent(".sel-class");
    const Iamcomponent = this.selectComponent("#sel-id");


    //2.调用setData修改数据(不是很合理)
    // Iamcomponent .setData({
    //   counter:Iamcomponent.data.counter+20
    // })

    //3.调用组件中的方法修改数据
    Iamcomponent.incrementCounter(10);
  }

相关文章

  • 自定义组件向页面传递数据、样式和事件

    1.向自定义组件传递数据 首先在自定义组件的js文件中定义要传递的属性 组件的内容如下,标题中没有写死,而是{{t...

  • 2019-01-31 vue组件基础篇2

    子组件 ═══>向父组件传递数据时,就要用到自定义事件v-on除了监听DOM事件外,还可以用于组件之间的自定义事件...

  • 2020-02-10

    通过自定义事件实现子组件向父组件传递数据. 流程: *子组件通过$emit()来触发事件 *通过v-on来...

  • vue组件学习2

    一.子组件向父组件传递数据 方法:子组件绑定子组件的自定义事件,但事件处理函数绑定父组件的方法 1.

  • Vue自定义组件

    简单组件展示 组件和页面类似 局部注册 vue页面注册局部组件 引入局部组件 调用 展示 组件间的数据和事件传递 ...

  • vue 组件(下篇)

    自定义事件 父组件是使用 props 传递数据给子组件,但如果子组件要把数据传递回去,应该怎样做?那就是自定义事件...

  • Vue组件间数据的传递

    通过 Prop 向子组件传递数据 通过事件向父组件发送消息

  • 2018-03-29

    子组件向父组件传递事件 父组件的数据是通过变量传递给子组件,子组件内的prop接受数据;子组件内部发生的事件,子组...

  • 2-5 vue 自定义事件 event up

    自定义事件 event up 我们知道,父组件是使用 props 传递数据给子组件,但如果子组件要把数据传递回去,...

  • 学习微信小程序(3)——组件

    一、自定义组件 1、组件模版和样式 组件模版组件模版的写法与页面模板相同。组件模版与组件数据结合后生成的节点树,将...

网友评论

      本文标题:自定义组件向页面传递数据、样式和事件

      本文链接:https://www.haomeiwen.com/subject/uadrgktx.html