regularjs/regular

如何给组件生成的DOM上增加属性?

Closed this issue · 1 comments

希望在不修改组件库的情况下,给这个库里的组件生成的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组件来嵌套一层,在外层上使用指令,但是又没办法去除外层节点。

所以想问一下还有什么办法来实现吗

由于Regular没有在设计中引入其它框架中,组件有且只能有一个顶级的节点 的限制,所以导致了DOM节点和常规组件的某些概念不能通用,

可以考虑增加一种方式,将指令和事件以代理的方式映射到组件的顶层DOM节点中(假如有的话),但为了兼容性,可能需要另外一种语法