一.组件模板和样式

类似于页面,自定义组件拥有自己的 wxml 和模板 wxss 样式。

1.组件模板

组件的写法和页面的写法相同,组件模板与组件数据结合后生成的数节点,

将被插入到组件的引用位置。在组件模板中提供一个<slot> 节点,用于承载组件

引用时候提供的子节点。

例如:

<view class="wrapper">

<view>这里是组件的内部节点</view>

<slot></slot>

</view>

引用在页面的.json 文件中配置。

"usingComponents": {

"v-component": "/components/cs/cs"

}

"v-component" :为自定义的模板名字,页面引用的时候用,

"/components/cs/cs"  引用组件的路径

页面中引用 如下:

<v-component>

<view>这里是插入到组件slot中的内容</view>

</v-component>

2.组件中的模板数据绑定

与普通的模板数据绑定相同,动态像子组件传递数据。

例如:

<v-component  prop-a="{{dataA}}" prop-b="{{dataB}}">

<view>这里是插入到组件slot中的内容</view>

</v-component>

组件接收到页面传递过来的数据,页面可以通过setData 来改变绑定的绑定字段。

(目前只能传递JSON数据)

3.组件的wxml 的slot

默认情况下,一个组件的wxml 中只能有一个slot,需要使用多个slot 时,可以在组件js

声明启用。

Component({

options:{

multipleSlots: true // 在组件定义的选项中启用多slot 支持

},

properties:{},

methods:{}

})

此时在组件就可以启用多个slot,以不同的name 来区分。

例如:

<view class="wrapper">

<slot name=“head”></slot>

<view>这里是组件的内部节点</view>

<slot name="footer"></slot>

</view>

在使用的时候

<v-component >

<view slot="head">slot中的头部内容</view>

<view slot="footer">slot中的底部内容</view>

</v-component>

4.组件样式

组件对应wxss 文件的样式,只对组件wxml 内的节点生效。编写组件样式时注意:

(1) 组件和引用的页面,不能使用id选择器,(#a),属性选择器([a])和标签名属性

选择器,请改用class 选择器。

(2) 组件和引用组件的页面中使用后代选择器(.a .b) 在极端情况下会有非预期的表现。

(3)子元素选择器(.a>.b) 只能用于view 组件与其子节点之间,用于其他组件可以能导致

非预期的情况。

(4)继承样式,如font , color 会从外部组件继承到组件内。

(5)除继承样式外,app.wxss 中的样式,组件所在页面中的样式对自定义样式无效。

(6)组件可以指定节点的默认样式 :host{color:yellow;}

5.外部样式

组件接收外部传入的样式类,可以在Component 中用externalClasses 定义若干个外部样式

类,这个特性可以用实现类似于,view 组件的 hover-class属性,页面可以提供一个样式类

赋予 view 的hover-class 这个一样式类写在页面中,而非, view 组件的实现中。

例如:

/* 组件 custom-component.js */

Component({

externalClasses:['my-class']

})

<!-- 组件 custom-component.wxml -->

<v-component class="my-class" >

这段文本的颜色由外部组建的 class 觉得

</v-component>

组件的使用或者可以指定这个样式类对应的class, 就像使用普通属性样式一样

页面的WXML

<v-component  my-class="red-text"></v-component>

.red-text{

color:red;

}

6.使用组件接收全局样式

默认情况下,自定义组件的样式只受到wxss 的影响

(1) app.wxss 中使用了标签名选择器,影响到页面和全部组件,

(2) 在自定义的组件中激活了 addGlobalClass 选项,这样使自定义

组件能被app.wxss 或页面的wxss 中的所有样式。

要激活 addGlobalClass 选项,只需在Component 构造中将 options.addGlobalClass

字段为true (当激活了 addGlobalClass 选项后,存在外部样式污染样式组件的风险)

/* 组件 custom-component.js */ Component({ options: {     addGlobalClass: true,   }   })

/* 组件 custom-component.wxml  */

<text class="red-text">

这段文字颜色由 `app.wxss`和页面`wxss` 中的样式定义来规定

</text>

/*app.wxxs*/

.red-text{

color:red;

}

小程序 组件 Component的更多相关文章

  1. 小程序-组件component和模版template的选择和使用

    小程序提供了组件component和模版template那什么时候 选择哪一个使用呢?我总结了一下 template主要是模版,对于重复的展示型模块进行展示,其中调用的方法或者数据data都是需要引用 ...

  2. selectComponent是ok的,小程序组件 component方式,让子页面重绘

    this.selectComponent('#news').init(); 其中news是父级xml文件引用子组件的时给子组件的id. 当父级传给子级的数据有变化时,需要子页面重绘,所以就用上面那行代 ...

  3. 小程序组件化框架 WePY 在性能调优上做出的探究

    作者:龚澄 导语 性能调优是一个亘古不变的话题,无论是在传统H5上还是小程序中.因为实现机制不同,可能导致传统H5中的某些优化方式在小程序上并不适用.因此必须另开辟蹊径找出适合小程序的调估方式. 本文 ...

  4. 微信小程序-组件篇

    一.摘要 组件是小程序整个语法中占比比较大的一部分,没写过组件可以说只懂了半个小程序.组件提供了类似页面的生命周期与逻辑.相比于模板,组件能实现的功能更加全面,也更为强大.通过slot可以自由扩展组件 ...

  5. 小程序组件--> 组件传参

    小程序组件,在components文件夹右击-->创建文件夹-->右击-->新建component即可 创建一个组件 如果多个地方需要使用到,可以在app.json中加入一下代码,相 ...

  6. 微信小程序(组件demo)以及预览方法:(小程序交流群:604788754)

    1. 获取微信小程序的 AppID 登录 https://mp.weixin.qq.com ,就可以在网站的"设置"-"开发者设置"中,查看到微信小程序的 Ap ...

  7. WePY | 小程序组件化开发框架

    资源连接: WePY | 小程序组件化开发框架 WePYAWESOME 微信小程序wepy开发资源汇总 文档 GITHUB weui WebStorm/PhpStorm 配置识别 *.wpy 文件代码 ...

  8. 小程序组件 scroll-view 滑动

    小程序组件 scroll-view 中分别有上下竖向滑动和左右横向滑动之分,在这次项目中刚好需要用到横向滑动,但在测试过程中发现横向滑动没有了效果(静止在那里没移动过),经调试发现: 1.scroll ...

  9. 微信小程序组件化实践

    Do Not Repeat Yourself 如何提高代码质量,方法有许多:抽象.模块.组件化,我认为它们的中心点都是--Do Not Repeat Yourself. 小程序组件化 我们先看看小程序 ...

随机推荐

  1. swiper移动端日历-1

    先上图:    说明:这是基于移动端的,对于PC端浏览器支持不是很好(我测的结果是IE无效),另外这个swiper是4.x版本的 思路: 先引用css <link href="css/ ...

  2. 浅谈 Underscore.js 中 _.throttle 和 _.debounce 的差异[转]

    看的文章来自: https://blog.coding.net/blog/the-difference-between-throttle-and-debounce-in-underscorejs 使用 ...

  3. MUI框架-13-使用百度地图 API(图文教程)

    MUI框架-13-使用百度地图 API(图文教程) 后面有实例,转载请注明出处 一.申请百度地图权限 1.打开 百度地图开放平台:http://lbsyun.baidu.com/apiconsole/ ...

  4. 自学git心得-5

    标签管理也是git里面比较重要的一部分内容,我们下载软件的时候经常看到诸如v2.0.v2.3.0这样的版本号,在git里也是一样,有时为了避免分支的名称五花八门而发生混淆的情况,我们常常会 给分支贴上 ...

  5. ElasticSearch初体验之使用

    好久没写博文了, 最近项目中使用到了ElaticSearch相关的一些内容, 刚好自己也来做个总结.现在自己也只能算得上入门, 总结下自己在工作中使用Java操作ES的一些小经验吧. 本文总共分为三个 ...

  6. Java多线程学习笔记(三)同步和异步

    首先是一段代码: public class HasSelfPrivateNum { public void addI(String username){ try { int num=0; if(use ...

  7. sql大数据多条件查询索引优化

    此优化的前提可以称之为最近流行的头条人物“许三多”,总数据多,查询条件多,返回列多 优化前分页查询内部select列为需要的全部列,优化后内部select只返回ID主键,外部查询关联原数据表,然后查出 ...

  8. time random sys 模块

    time模块 顾名思义就是时间模块 我们在之前就用过一些时间模块 比如你想要让打印的时间延迟就time.sleep() 首先我们知道这是一个时间操作的模块 它可以分为三种模式:时间戳模式.格式化时间模 ...

  9. java抽象类,接口与异常

    1.抽象类: 定义;包含一个抽象方法的类称称为抽象类,抽象类在class前使用adstract关键词修饰. 抽象方法;只声明未实现的方法称为抽象方法,使用adstract关键字声明该方法. 抽象类定义 ...

  10. 25个最佳的SSH命令

    参考文献地址(SSH原理与运用(一):远程登录): http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html 参考文献地址(SSH原理与 ...