<template>
|
|
<view class="defaultStyles">
|
|
</view>
|
|
</template>
|
|
<script lang="uts">
|
|
/**
|
|
* 引用 iOS 系统库
|
|
* [可选实现,按需引入]
|
|
*/
|
|
import { UIImage, UIView, UIImageView } from "UIKit"
|
|
import { setSvgImage } from './utils'
|
|
|
|
//原生提供以下属性或方法的实现
|
|
export default {
|
|
data() {
|
|
return {};
|
|
},
|
|
/**
|
|
* 组件名称,也就是开发者使用的标签
|
|
*/
|
|
name: "l-svg-x",
|
|
/**
|
|
* 组件涉及的事件声明,只有声明过的事件,才能被正常发送
|
|
*/
|
|
emits: ['click'],
|
|
/**
|
|
* 属性声明,组件的使用者会传递这些属性值到组件
|
|
*/
|
|
props: {
|
|
"src": {
|
|
type: String,
|
|
default: ""
|
|
},
|
|
"color": {
|
|
type: String,
|
|
default: ""
|
|
}
|
|
},
|
|
/**
|
|
* 组件内部变量声明
|
|
*/
|
|
|
|
/**
|
|
* 属性变化监听器实现
|
|
*/
|
|
watch: {
|
|
"src": {
|
|
handler(newValue : String, oldValue : String) {
|
|
this.update(true)
|
|
},
|
|
immediate: false
|
|
},
|
|
"color": {
|
|
/**
|
|
* 这里监听属性变化,并进行组件内部更新
|
|
*/
|
|
handler(newValue : String, oldValue : String) {
|
|
if (this.color == '') return
|
|
this.update(false)
|
|
},
|
|
immediate: false
|
|
},
|
|
},
|
|
/**
|
|
* 规则:如果没有配置expose,则methods中的方法均对外暴露,如果配置了expose,则以expose的配置为准向外暴露
|
|
* ['publicMethod'] 含义为:只有 `publicMethod` 在实例上可用
|
|
*/
|
|
// expose: [],
|
|
methods: {
|
|
update(flag : boolean) {
|
|
setSvgImage(this.src, this.color, (image: UIImage|null)=>{
|
|
if(image != null){
|
|
this.$el.image = image
|
|
if(flag){
|
|
this.$emit('load')
|
|
}
|
|
return
|
|
}
|
|
this.$emit('error')
|
|
})
|
|
}
|
|
},
|
|
/**
|
|
* 组件被创建,组件第一个生命周期,
|
|
* 在内存中被占用的时候被调用,开发者可以在这里执行一些需要提前执行的初始化逻辑
|
|
* [可选实现]
|
|
*/
|
|
created() {
|
|
|
|
},
|
|
/**
|
|
* 对应平台的view载体即将被创建,对应前端beforeMount
|
|
* [可选实现]
|
|
*/
|
|
NVBeforeLoad() {
|
|
|
|
},
|
|
/**
|
|
* 创建原生View,必须定义返回值类型
|
|
* 开发者需要重点实现这个函数,声明原生组件被创建出来的过程,以及最终生成的原生组件类型
|
|
* [必须实现]
|
|
*/
|
|
NVLoad() : UIImageView {
|
|
let imageView = new UIImageView()
|
|
imageView.contentMode = UIView.ContentMode.scaleAspectFit
|
|
imageView.isUserInteractionEnabled = true
|
|
return imageView
|
|
},
|
|
|
|
/**
|
|
* 原生View已创建
|
|
* [可选实现]
|
|
*/
|
|
NVLoaded() {
|
|
/**
|
|
* 通过 this.$el 来获取原生控件。
|
|
*/
|
|
this.update(true)
|
|
},
|
|
/**
|
|
* 原生View布局完成
|
|
* [可选实现]
|
|
*/
|
|
NVLayouted() {
|
|
|
|
},
|
|
/**
|
|
* 原生View将释放
|
|
* [可选实现]
|
|
*/
|
|
NVBeforeUnload() { },
|
|
/**
|
|
* 原生View已释放,这里可以做释放View之后的操作
|
|
* [可选实现]
|
|
*/
|
|
NVUnloaded() {
|
|
|
|
},
|
|
/**
|
|
* 组件销毁
|
|
* [可选实现]
|
|
*/
|
|
unmounted() { }
|
|
|
|
/**
|
|
* 更多组件开发的信息详见:https://uniapp.dcloud.net.cn/plugin/uts-component.html
|
|
*/
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
|
|
</style>
|