组件如何实现追加元素的自动实例化

2020-06-01 10:41:37 +08:00
 Marstin

比如定义组件 <component-a> 使用方法为以下两种:

    <component-a name="test1"></component-a>  
    
    <div name="test2"></div>
    $("[name=test2]").componentA({params:params});

如果是追加元素$(body).append('<component-a name="test3"></component-a>'),这个 test3 在 dom 中存在还是以原始文本存在,而非替换成 <component-a> 组件。
那么怎么在 component-a 内部实现才能让 test3 自动实例化呢?

1176 次点击
所在节点    前端开发
11 条回复
Marstin
2020-06-01 11:20:10 +08:00
难顶
temporary
2020-06-01 11:22:26 +08:00
vue?
TomatoYuyuko
2020-06-01 11:22:50 +08:00
你这个问题给我整蒙了,你这用了 mvvm 的框架是吗,那还用 jq 做 dom 操作?
Marstin
2020-06-01 15:11:57 +08:00
@TomatoYuyuko @temporary 就是没用 mvvm 框架才有这问题啊,现在很烦
TomatoYuyuko
2020-06-01 15:42:53 +08:00
@Marstin 你这是什么框架或者插件写的组件
rioshikelong121
2020-06-01 15:47:38 +08:00
看看你的框架有没有提供什么主动渲染 Component 的方法。
Marstin
2020-06-01 16:15:49 +08:00
@TomatoYuyuko jq,组件自己手写的
@rioshikelong121 没有
temporary
2020-06-01 17:55:05 +08:00
document.body.append(document.createElement('component-a'))
TomatoYuyuko
2020-06-01 18:02:33 +08:00
你这么写好绕啊,非得用 JQ 的话,干脆给$挂个新方法,把 append 封装一下不就好了?
$(body)._append('<component-a name="test3"></component-a>')
twelvechen
2020-06-02 07:57:27 +08:00
使用 MutationObserver 监听 DOM 变动,然后在回调里实例化试试?
Marstin
2020-06-02 08:10:55 +08:00
@twelvechen MutationObserver 确实完全能满足需求的,就有点担心性能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/677389

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX