发表于: 2019-03-25 23:24:30
2 532
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
关于小程序的模板 template
类似于vue的模块化,区别在于不能够在模板中定义Js
需要依次定义和引入wxml文件和wxss文件, 注意引入标签后面的结尾 / 必须加上
定义一个模板:
wxml文件:使用 <template name="模板名字"> </template>
<template name="postItem">
<view
<image src='/images/1.png'
<text
</view>
</template>
在需要使用模板的页面引入该模板:
wxml文件中引入模板的wxml文件:使用 <import src="绝对路径/相对路径" />
使用模板位置使用
<template is="模板的名字" data="传递的数据" /> 传递的值如果是默认的 item, 可以简写为 data = {{... item}} 则模板里面可以直接使用变量名,不需要 item . 变量名
<block wx:for="{{local_key}}" wx:for-item="item" wx:key="unique">
<template is="postItem" data="{{item}}"/>
</block>
wxss文件中引入模板的wxss文件:使用 @import '相对路径/绝对路径'
组件模板
在组件模板中可以提供一个 <slot> 节点,用于承载组件引用时提供的子节点。
在组件定义时的选项中启用多slot支持
Component({
options: {
multipleSlots: true // 在组件定义时的选项中启用多slot支持
},
properties: { /* ... */ },
methods: { /* ... */ }
})
可以在这个组件的wxml中使用多个slot,以不同的 name 来区分。
使用时,用 slot 属性来将节点插入到不同的slot上。
1)组件和引用组件的页面不能使用id选择器(#a)、属性选择器([a])和标签名选择器,请改用class选择器。
2)组件和引用组件的页面中使用后代选择器(.a .b)在一些极端情况下会有非预期的表现,如遇,请避免使用。
3)子元素选择器(.a>.b)只能用于 view 组件与其子节点之间,用于其他组件可能导致非预期的情况。
4)继承样式,如 font 、 color ,会从组件外继承到组件内。
5)除继承样式外, app.wxss 中的样式、组件所在页面的的样式对自定义组件无效
组件希望接受外部传入的样式类(类似于 view 组件的 hover-class 属性)。此时可以在 Component 中用 externalClasses 定义段定义若干个外部样式类。
Component构造器
properties ,组件的对外属性,是属性名到属性设置的映射表,属性设置中可包含三个字段, type 表示属性类型、 value 表示属性初始值、 observer 表示属性值被更改时的响应函数
在 properties 定义段中,属性名采用驼峰写法(propertyName);在 wxml 中,指定属性值时则对应使用连字符写法(component-tag-name property-name="attr value"),应用于数据绑定时采用驼峰写法(attr="{{propertyName}}")。
组件事件
自定义组件触发事件时,需要使用 triggerEvent 方法,指定事件名、detail对象和事件选项
behaviors
每个 behavior 可以包含一组属性、数据、生命周期函数和方法,组件引用它时,它的属性、数据和方法会被合并到组件中,生命周期函数也会在对应时机被调用。每个组件可以引用多个 behavior 。 behavior 也可以引用其他 behavior 。
behavior 需要使用 Behavior() 构造器定义。
wx://form-field 代表一个内置 behavior ,它使得这个自定义组件有类似于表单控件的行为。
组件间关系
父子组件有相互间的关系,相互间的通信往往比较复杂。此时在组件定义时加入 relations 定义段,可以解决这样的问题(通过relation来告诉组件他的父节点是谁 或者 他的子节点是谁)
relations中type选项:目标组件的相对关系,可选的值为 parent 、 child 、 ancestor 、 descendant
。
明天计划的事情:(一定要写非常细致的内容)
复习总结
遇到的问题:(遇到什么困难,怎么解决的)
收获:(通过今天的学习,学到了什么知识)
小程序自定义组件
评论