2013-12-14 2 views
2

Я узнаю о компонентах angular.dart, пытаясь сделать доступ к существующему плагину jquery. Я пытаюсь что-то вроде следующего:Как вызвать плагин jquery изнутри компонента angle.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 выбрать элемент, который находится внутри компонента, то есть в тени йот?

BTW, каков в настоящее время рекомендуемый способ импорта js? Я нашел это:

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

, но теперь, когда какая-то часть функциональности пакета JS перемещается в дротиком: JS, я не уверен, что один должен делать.

ответ

2

Проблема, кажется, jQuery проблема. Возможно, он будет работать с:

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

О дротик: JS против пакета: JS (см How do you interact with js from dart?):

пакет: JS обеспечивает более простую Апи, которая приходит на стоимость увеличения размера js (поскольку упаковка: js использует дротик: зеркала и noSuchMethod).

О js namespace вы можете делать то, что хотите. Я лично предпочитаю использовать префикс, чтобы лучше видеть, когда выполняется взаимодействие с Js. Но это вопрос вкуса.