如何从angular.dart组件中调用jquery插件?

我正在通过尝试创建一个将访问现有jquery插件的组件来学习angular.dart组件。 我正在尝试以下内容:

library mylib; import 'dart:html'; // querySelector import 'package:js/js.dart'; // javascript import 'package:angular/angular.dart'; @NgComponent( selector: 'aSelector', templateUrl: 'partial.html', cssUrl: 'style.css', publishAs: 'ctrl', map: const { 'param': '=>param' } ) class myComponent extends NgShadowRootAware { String param; Compiler compiler; Injector injector; Scope scope; MyComponent(this.compiler, this.injector, this.scope); void onShadowRoot(ShadowRoot shadowRoot) { this.scope.$watch((int) => shadowRoot.querySelector('.myContainer').text.length, (currentValue, previousValue, Scope scope) { if (currentValue != previousValue) { var container = context.jQuery('.myContainer', shadowRoot); var options = map({ 'p1': 1, 'p2': 2 }); container.jqplugin(options); } }); } } 

不幸的是,’容器’似乎是空的…如何使jQuery选择一个组件内部的元素,即阴影dom?

BTW,目前推荐的导入js的方式是什么? 我发现了这个:

 import 'package:js/js.dart' as js; 

但是现在包js的某些部分function被移动到dart:js中,我不确定应该做什么。

这个问题似乎是一个jQuery问题。 也许它适用于:

 var container = context.jQuery(shadowRoot.querySelector('.myContainer')); 

关于dart:jspackage:js (请参阅如何与dart中的js进行交互? ):

package:js提供了一个更简单的Api,代价是增加了js的大小(因为package:js使用dart:mirrorsnoSuchMethod )。

关于js命名空间,您可以执行您想要的操作。 我个人更喜欢使用前缀来更好地了解何时完成与Js的交互。 但这是一个品味问题。

Interesting Posts