3

renderContenOn:が呼び出された後、ページのコンテンツを更新するにはどうすればよいですか? ページがレンダリングされたように、ユーザーが送信ボタンをクリックするとコールバックが発生し、同じページを更新する必要があります。

ありがとう。

4

2 に答える 2

3

同じページにとどまることが重要な場合は、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:普段使い。

于 2013-04-12T05:56:27.203 に答える