如何给组件生成的DOM上增加属性?
Closed this issue · 1 comments
LzxHahaha commented
希望在不修改组件库的情况下,给这个库里的组件生成的DOM中增加一些自定的属性,已经试过directive,对组件无效。
举个例子
<!-- HTML -->
<div id="app"></div>
<script src="https://unpkg.com/nek-ui@0.6.1/dist/vendor/regular.min.js"/>
// JS
var TestComponent = Regular.extend({ template: '<div>test</div>' });
var App = Regular.extend({
template: '<test r-test></test><div r-test>div</div>'
}).component('test', TestComponent)
.directive('r-test', function(elem, value) {
elem.setAttribute('test', 'value');
});
new App().$inject('#app');
运行例子:JS Fiddle
这段代码中生成的两个div里,用test
组件生成的代码上面就没有test这个attribute。
考虑过修改组件库,但是这样太难以维护;还试过实现一个wrapper
组件来嵌套一层,在外层上使用指令,但是又没办法去除外层节点。
所以想问一下还有什么办法来实现吗
leeluolee commented
由于Regular没有在设计中引入其它框架中,组件有且只能有一个顶级的节点
的限制,所以导致了DOM节点和常规组件的某些概念不能通用,
可以考虑增加一种方式,将指令和事件以代理的方式映射到组件的顶层DOM节点中(假如有的话),但为了兼容性,可能需要另外一种语法