【发布时间】:2014-09-05 02:30:26
【问题描述】:
我想将组件库(Kendo UI)与 Polymer 和 Dart 一起使用,并在 HTML 模板文件中以纯 JS 形式保留尽可能多的组件初始化。 (Kendo 库没有 Dart 绑定,我不想开辟这条道路……)现在,使用这些组件需要运行一些 JavaScript 来初始化 div。我遇到的困难是让脚本标签能够看到影子 DOM 中的元素并在聚合物初始化后在适当的时间运行。
通过在 Dart Polymer 类的 ready() 函数中获取 div 并使用 JS 上下文回调到我的模板以在那里运行 JS 函数,将 div 传回给它,我找到了一个有点合理的解决方案。例如
例如在一个自定义标签的模板文件中,我有:
<script type='text/javascript'>
function initKendo(panel) {
$(panel).kendoPanelBar({
expandMode: 'multi'
});
}
</script>
我用 Dart 来称呼它:
ready(){
js.context.initKendo( $['myPanel'] );
}
这确实有效,但感觉就像是一个黑客,我担心我可能会遇到什么问题。
我的问题是:
是否有更直接的方法可以在 HTML 模板文件的脚本标记中完成此操作(无需回调)。我已经尝试注册 Polymer.ready() 并使用 shadowDom 获取来查询我的 div,它有点尝试工作,但由于某种原因我的所有样式都丢失了......而且我担心混合普通的 Polymer 和 Dart聚合物可能不好。
这种通用方法可行吗?我可以放入 Polymer 模板文件的内容有哪些限制,第三方库无法很好地处理 shadow dom 可能会遇到哪些问题?到目前为止,如果我只是在模板文件的顶部导入它(例如库和样式),那么简单的东西似乎就可以工作。
如果我现在想将第三方库与 Dart 一起用于控制器逻辑,我还有哪些其他选择?如果不是 Polymer,我应该如何分解我的 HTML?
【问题讨论】:
标签: dart polymer dart-polymer