2012-11-02 13 views
6

Jestem nowy w Dart i mam problem z rozpoczęciem pracy z biblioteką js-interop. Chcę dodać suwak z jquery ui do mojej strony, ale nie mogę wymyślić, jak wykonać wywołanie konfiguracji slider() z Dart. Czy js-interop jest prawidłowym sposobem robienia tego? Pewna pomoc z tego będzie bardzo doceniana.Dart js-interop z jquery ui

void main() { 
    js.scoped(() { 
    var slider = query('#slider-range'); 
    var options = js.map({ 
     'range': true, 
     'values': [ 17, 67 ] 
    }); 
    // This doesn't work. Element has no method named slider. 
    slider.slider(options); 

    // In javascript it's done like this: 
    // $("#slider-range").slider({ 
    // range: true, 
    // values: [ 17, 67 ] 
    // }); 

    // This alert works. 
    js.context.alert('Hello from Dart via JS'); 
    }); 
} 

Odpowiedz

3

W twoim przypadku trzeba użyć js.context. $ ('# Slider-range') zamiast zapytania ('# slider-range'). Zasadniczo, js.context pozwala na dostęp do dowolnej zmiennej JavaScript. Za pomocą js.context. $ uzyskujesz dostęp do obiektu javascript jQuery (tj. $) po stronie strzałki.

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

void main() { 
    js.scoped(() { 
    var slider = js.context.$('#slider-range'); 
    var options = js.map({ 
     'range': true, 
     'values': [ 17, 67 ] 
    }); 
    slider.slider(options); 
    }); 
} 
+0

Dzięki za szybką odpowiedź. Twoje rozwiązanie wydaje się dobre. Ale teraz pojawia się błąd w linii opcji var: http://paste2.org/p/2419107 Jakieś pomysły? – 0tto

+1

Od r14094 Map.getKeys() została zmieniona na Map.keys. Ostatnia wersja js-interop w pub.dartlang.org nie zawiera aktualizacji z tą zmianą. Dopóki nowa wersja nie zostanie wyładowana, musisz użyć bezpośrednio git: //github.com/dart-lang/js-interop.git, która zawiera łatkę. –

+0

Dzięki Alexandre! – 0tto

1

Kolejny przykładowy kod:

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

js.context.jQuery(); 
var context = js.context; 
var param = js.map({ 'modal': true, "width":1000, "height":600}); 
js.context.jQuery("#dialog").dialog(param); 

w html

<script src="packages/browser/interop.js"></script> 

Powyższy kod otworzyć div jako okna przy użyciu jQuery.

+0

Ten komentarz nie jest już ważny. Czy ktoś może to zaktualizować? – maugch