renderContenOn:
が呼び出された後、ページのコンテンツを更新するにはどうすればよいですか? ページがレンダリングされたように、ユーザーが送信ボタンをクリックするとコールバックが発生し、同じページを更新する必要があります。
ありがとう。
同じページにとどまることが重要な場合は、jQuery バインディングなどの JavaScript ライブラリのいずれかを使用することをお勧めします。
AJAX を使用する
Pharo または Squeak 用の Seaside をダウンロードまたはインストールした場合は、イメージ内に jQuery の例を見つけることができます。標準ポートを使用する場合は、http://localhost:8080/javascript/jquery
またはで参照してください。http://localhost:8080/javascript/jquery-ui
例の 1 つは、現在のページのコンテンツを置換または変更する単純な AJAX コンポーネントです。
JQAjaxFunctionalTest>> renderContentOn: html
html code id: #logger; with: DateAndTime now.
html paragraph: [
html submitButton
onClick: (html jQuery ajax
script: [ :s | s << (s jQuery: #logger) html: DateAndTime now ]);
with: 'Replace'.
html submitButton
onClick: (html jQuery ajax
script: [ :s | s << (s jQuery: #logger) prepend: DateAndTime now ]);
with: 'Prepend'.
html submitButton
onClick: (html jQuery ajax
script: [ :s | s << (s jQuery: #logger) append: DateAndTime now ]);
with: 'Append' ]
たとえば、これを使用して、アプリケーション用に構成された jQuery ライブラリが必要であることに注意してください。
| application |
"your application, eg, when you register it:
application := WAAdmin register: MyRootComponent asApplicationAt: 'myApp'.
"
application preferenceAt: #scriptGeneratorClass put: JQScriptGenerator.
application addLibrary: JQDeploymentLibrary.
現在レンダリングされているページのコンテンツを動的に変更するには、これで十分です。
Ajaxifier に AJAX を使用させる
Seaside の jQuery バインディングには、通常の呼び出しを ajax リクエストに変換するajaxifierが付属しているため、自分で jQuery を使用する必要はありません。
アプリケーションを次のように構成するだけです。
| application |
"your application, eg, when you register it:
application := WAAdmin register: MyRootComponent asApplicationAt: 'myApp'.
"
application preferenceAt: #scriptGeneratorClass put: JQScriptGenerator.
application
preferenceAt: #sessionClass put: WAExpirySession;
addLibrary: JQDeploymentLibrary;
addLibrary: JQAjaxifierLibrary/.
そして#call:
普段使い。