【问题标题】:How to embed a jquery ui widget into a polymer-dart webcomponent如何将 jquery ui 小部件嵌入到聚合物飞镖 Web 组件中
【发布时间】:2023-04-01 04:11:01
【问题描述】:

我尝试嵌入一个 jquery ui 小部件,f.e.将日期选择器添加到聚合物飞镖 Web 组件中。

Webcomponent 是这样定义的:

<polymer-element name="my-datepicker">
    <template>
        <div id="datepicker"></div>
    </template>
    <script type="application/dart" src="clickcounter.dart"></script>
</polymer-element>

这个小部件的初始化是在JS中完成的

<script>
    $(function() 
    { $( "#datepicker" ).datepicker();});
</script>

如何在我的 polymer.dart webcomponent 中的 dart 中初始化该小部件。

我尝试使用 'dart:js' 调用该方法,但我无法使用 dart:js 访问 shadow dom。

shadowRoot.querySelector("#datepicker")

我可以访问 shadow-dom,但是我如何调用 JS 方法 - datepicker() - 在上面

【问题讨论】:

    标签: jquery dart dart-polymer dart-js-interop


    【解决方案1】:

    您可以将元素传递给 jQuery 而不是选择器。所以下面的代码应该可以工作:

    final element = $['datepicker'];
    js.context.callMethod(r'$', [element]).callMethod('datepicker');
    

    【讨论】:

    • 最终元素 = $['#datepicker'];没有没有初始化日期选择器,最终元素 = shadowRoot.querySelector("#datepicker");有用!谢谢!
    • 糟糕,我留下了前面的 # 。固定。
    • 是 $['datepicker'] 只是 shadowRoot.querySelector("#datepicker") 的“缩写”还是有区别?
    • 是的,是一样的。见Polymer.$
    • 该解决方案适用于 jquery datepicker。使用另一个 jquery-widget handsometable 它不会(没有错误,但没有初始化组件)。知道可能是什么原因或我可以在哪里研究。
    【解决方案2】:

    只需在元素上调用 JQuery,然后调用 datepicker()。 dart js 包使其易于阅读:

    import 'package:js/js.dart';
    
    var element = shadowRoot.querySelector("#datepicker");
    var $ = context.global[r'$'];
    $(element).datepicker();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 2014-10-05
      相关资源
      最近更新 更多