本帖最后由 kkzxsews 于 2024-8-3 15:08 编辑
VUE3 有一个 defineCustomElement方法可以把整个VUE项目打包成自定义元素给这个返回的自定义元素增加上 Ha 卡片必要的属性和方法后就可以注册成卡片在configuration.yaml引入并使用了
https://github.com/fh332393900/threejs-demo是一个和floor3dcard一样加载glb模型的vue3项目
下载到本地 run起来后 修改它的 src/main.js
#three{
height:90vh;
display: flex;
flex-direction: column-reverse
}`,
`@import 'http://192.168.0.155:8123/local/community/myhome/dist/index.css'
`]
const floorcard_my = defineCustomElement(App);
floorcard_my.prototype.config = null;
floorcard_my.prototype.setConfig = function (config:any) {
this.config = config
}
Object.defineProperties(floorcard_my.prototype,{
hass: {
set:function(newhass:any) {
// console.log(newhass);
(globalThis as any).hass = newhass
// console.log((globalThis as any).hass.states)
myEvent = new CustomEvent('myCustomEvent', {
detail: {
message: newhass
},
bubbles: true, // 是否冒泡
cancelable: false // 是否可以取消
});
window.dispatchEvent(myEvent)
}
}
})
customElements.define('floorcard-my', floorcard_my );
//configuration.yaml
[
{url: main.js的位置, type: module},
引入后把导入的模型换成自己的 再在代码中仿照floor3dcard绑定实体增加点光源就有类似floor3dcard的效果了
|