1

私はリーフを掘り下げ始めていて、解決方法が本当にわからない何かに出くわしました...

RETextFieldとREButtonがあり、ボタンが押されたときにテキストフィールドの内容を更新したいので、これが私が試していることです。

initializeContents
    self
        add:
            ((RETextField new)
                id: 'myTextField';
                on: #textFieldContents of: self).
    self
        add:
            ((REButton new)
                label: 'Try me!';
                callback: [ 
                    self triggerThenDo: [
                        textFieldContents := textFieldContents , ' and something else']).

テキストフィールドに更新するように指示する必要があるため、これは機能しません。そこで、次のことを試しました。

initializeContents
    self
        add:
            ((RETextField new)
                id: 'myTextField';
                on: #textFieldContents of: self).
    self
        add:
            ((REButton new)
                label: 'Try me!';
                callback: [ 
                    self triggerThenDo: [
                        textFieldContents := textFieldContents , ' and something else'.
                        (self canvas jQuery: '#myTextField') 
                            load html: 
                               [ :h | h text: textFieldContents ] ] ])

しかし、それもうまくいきませんでした...self canvas jQuery ajax script: etc.運がなくても試してみました。

リーフには独自のエレガントな方法があると思いますが、どこにも見つかりません...誰か?:)

4

1 に答える 1

3

Reefコンポーネントを作成するときは、フォームウィジェットとフォームウィジェットだけをトリガーできることを考慮する必要があります。最初の例では、コンポーネントがREFormの子である場合にのみ機能するはずです。このようなもの:

REForm subclass: #MyForm
    instanceVariableNames: 'textFieldContents'
    classVariableNames: ''
    poolDictionaries: ''
    category: 'ReefSample1-View'.

textFieldContents
    ^textFieldContents

textFieldContents: aString
    textFieldContents := aString

initializeContents 
    self add: (RETextField new 
        on: #textFieldContents of: self).
    self add: (REButton new 
        label: 'Try me!';
        callback: [ self triggerThenDo: [ self inform: self textFieldContents ]]).

...正しく動作するはずです。また、Reefアプリケーションは特別なメカニズムを使用して登録する必要があることに注意してください。

REApplication 
    registerAsApplication: 'name'
    root: MyRootComponent 

この登録により、すべてのライブラリ依存関係が追加され、ajaxリクエストを管理するためのディスパッチャーでアプリケーションが装飾されます。

于 2011-02-25T11:44:29.670 に答える