2013-03-24 11 views
5

Używam morska (2,8 w Squeakiem 4.2) i mam normalnie aktualizację tak:Okresowa zmiana JQuery w Seaside

html div 
    onClick: ((html jQuery: '#asdf') load html: [:h|h text: 'qwer']) 
    ; with: 'asdf'. 

Ale tym razem mam do aktualizacji div okresowo.

Użyłem PT periodicalEvaluator w innym projekcie, jednak w tym nie mogę, muszę trzymać się JQ.

Próbowałem użyć JQInstance na delay:millis we wszystkich kombinacjach mogłem pomyśleć:

onClick: (((html jQuery id: 'chattertext') delay: 1000; yourself) load html: [:h| self renderTextOn: h]) 
; onClick: (((html jQuery id: 'chattertext') delay: 1000) load html: [:h| self renderTextOn: h]) 
; onClick: (((html jQuery id: 'chattertext') delay: 1000; load) html: [:h| self renderTextOn: h]) 
and others 

jakiegoś powodu zmiana jest chwilowa zamiast po 1000 Millis które muszę.

Odpowiedz

4

spojrzeć na przykład pochodzących z JQuery test funkcjonalny łazienką:

JQRepeatingFunctionalTest>>#renderContentOn: html 
    html paragraph 
    script: (html jQuery this load 
     html: [ :r | self renderTimeOn: r ]; 
     interval: 1 seconds); 
    with: [ self renderTimeOn: html ] 

Przykład działa pod numerem here.

+0

To jest, dzięki! Nie można jeszcze dać +1, ponieważ wymaga 15 powtórzeń. – ben

+0

nie zapomniałem ;-) – ben

1

Funkcja jQuery's delay dotyczy tylko efektów [1].

Aby osiągnąć to, co chcesz, wystarczy użyć Javascript w setTimeout lub setInterval funkcje:

onClick: (((html jQuery id: 'chattertext') load html: [:h| self renderTextOn: h]) timeout: 1000) 

[1] http://api.jquery.com/delay/

+0

Po pierwsze, dziękuję za odpowiedź. Ale pokazuje błąd: 'WAError: Opcja 'timeout' nie jest obsługiwana w JQLoad. Użyj #ajaxSetup do skonfigurowania wartości domyślnych lub bardziej wydajnej wersji z # ajax.'. Jakiś pomysł jak to naprawić? – ben

+0

To naprawdę niefortunne nadpisanie metody na opakowaniach JQAjax. Czy możesz wypróbować następujące rzeczy? (((HTML jQuery id: "chattertext") ładuje html: [: h | self renderTextOn: h]) addDecoration: (czas trwania JSTimeout: aDuration)) Daj mi znać, czy to działa, to dostosuję moją odpowiedź. –

+0

ah Widzę, to zostało rozwiązane w międzyczasie :-) –