自定义外壳尺寸组件
自定义外壳组件的宽高,可以通过在画布中拖拽组件边框滑块来实现,但如果想通过属性栏展示自定义外壳组件的宽高,可以配置一个尺寸组件来实现。
属性 | 值 | 备注 |
---|---|---|
type | BgSize | 显示组件的宽高 |
name | 属性名,可以自定义名称,不要超过4个字,否则会折行。 | |
callback | object/string | 可以直接配置回调函数名或一个对象。 当配置callback为回调函数名时,回调函数会接收一个返回值。格式:{ngvwidth:'100px',ngvheight:'100px'} 当配置为对象时,具体用法请看下面的callback配置为object |
只用配好这2个属性,就可以在属性栏展示一个尺寸组件了。
展示的是自定义组件外壳的宽和高,改变其中一个值将会改变组件的大小。
当宽高改变时,如果想要得到回调,可以增加一个callback的配置
{
...
"customAttributes":{
"pro":[
{
"type":"BgSize",
"name":"尺寸",
"callback":{
"ngvwidth":"widthChange",
"ngvheight":"heightChange"
}
}
],
"con":[]
}
...
}
在main.js的return 对象中增加widthChange、heightChange回调函数
ngvwidth、和ngvheight 是固定的宽度和高度的key值。
(function(){
return{
$data:{
properties:null
},
$hooks:{
onInit(properties){
this.properties=properties;
},
onDestroy(){
},
setData(){
},
outSizeCallBack(){
}
},
$methods:{
widthChange(width){
console.log(width);
//控制台打印:100px
},
heightChange(height){
console.log(height)
}
}
}
})
当自定义外框尺寸发生变化的时候,widthChange和heightChange这个两个函数中可以拿到尺寸的回调。
需要注意的是,在onInit方法的入参properties中,同样存在着定义外框尺寸的宽高信息。
可以通过this.properties.style.width或this.properties.style.height来引用,得到的值,与widthChange和heightChange回调函数中拿到的值是一致的。
当作完上述配置后,正常情况下,属性栏就会展示尺寸组件。
它有宽和高两个属性,可以通过输入宽高值来改变尺寸,也可以在项目中通过缩放功能来改变组件的尺寸。
通过上面的方法,可以设置和获取自定义组件外壳的宽高。
如果开发者想用这个组件再配置一个尺寸组件,来改变自身的某个div的框高样式,可以在原来的基础上再配置customInput属性。
customInput属性是个对象,里面包含这着该组件所有的可以设置的入参。
- costomInput下可以配置的属性:
属性 | 类型 | 值 | 备注 |
---|---|---|---|
unit | 布尔 | true/false | 显示/隐藏 px |
ngvwidth | 字符串 | 100px | 宽度、仅支持px、>=-1px |
ngvheight | 字符串 | 100px | 高度、仅支持px、>=-1px |
config.json配置如下:
{
...
"customAttributes":{
"pro":[
{
"type":"BgSize",
"name":"尺寸",
"callback":{
"ngvwidth":"widthChange",
"ngvheight":"heightChange"
}
},
{
"type":"BgSize",
"name":"div宽高",
"callback":{
"ngvwidth":"innerWidthChange",
"ngvheight":"innerHeightChange"
},
"customInput":{
"unit":true,
"ngvwidth":"20px",
"ngvheight":"20px"
}
}
],
"con":[]
}
...
}
同样的在main.js中增加回调方法
(function(){
return{
$data:{
properties:null
},
$hooks:{
onInit(properties){
this.properties=properties;
},
onDestroy(){
},
setData(){
},
outSizeCallBack(){
}
},
$methods:{
widthChange(width){
console.log(width);
//控制台打印:100px
},
heightChange(height){
console.log(height)
},
innerWidthChange(_width){
console.log(_width);
},
innerHeightChange(_height){
console.log(_height);
},
}
}
})
运行调试后,可以看到右侧属性栏增加了一个尺寸组件。