Smalltalk 动态更新礁石部分

Smalltalk 动态更新礁石部分,smalltalk,seaside,Smalltalk,Seaside,我开始在暗礁里挖洞,我遇到了一些我真的不知道如何解决的问题 我有一个RETextField和一个REButton,我想在按下按钮时更新文本字段的内容,下面是我的尝试: initializeContents self add: ((RETextField new) id: 'myTextField'; on: #textFieldContents of: self). self

我开始在暗礁里挖洞,我遇到了一些我真的不知道如何解决的问题

我有一个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 ] ] ])
但它也不起作用。。。还尝试了
selfcanvasjqueryajaxscript:etc.
但运气不佳


我猜暗礁有它自己优雅的方式做这件事,但我在任何地方都找不到。。。有人?:)

在创建Reef组件时,您需要考虑到只会触发表单和表单小部件。在您的第一个示例中,只要您的组件是改革的产物,它就应该起作用。大概是这样的:

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请求的调度器装饰应用程序