Seaside的定期JQuery更新

时间:2013-03-24 17:37:27

标签: jquery smalltalk seaside

我正在使用Seaside(Squeak 4.2中的2.8)并且通常会像这样更新:

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

但这一次,我必须定期更新div

我在另一个项目中使用过PT periodicalEvaluator,但是在这个项目中我不能,我必须坚持使用JQ。

我尝试在我能想到的所有组合中使用JQInstance的delay:millis

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

由于某种原因,更新是瞬时的,而不是在 1000毫秒,我需要之后。

2 个答案:

答案 0 :(得分:4)

查看JQuery功能测试套件附带的示例:

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

示例正在运行here

答案 1 :(得分:1)

jQuery的delay函数仅适用于效果[1]。

要实现您的目标,只需使用Javascript的setTimeout或setInterval函数:

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

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