Smalltalk 动态更新礁石部分
我开始在暗礁里挖洞,我遇到了一些我真的不知道如何解决的问题 我有一个RETextField和一个REButton,我想在按下按钮时更新文本字段的内容,下面是我的尝试:Smalltalk 动态更新礁石部分,smalltalk,seaside,Smalltalk,Seaside,我开始在暗礁里挖洞,我遇到了一些我真的不知道如何解决的问题 我有一个RETextField和一个REButton,我想在按下按钮时更新文本字段的内容,下面是我的尝试: initializeContents self add: ((RETextField new) id: 'myTextField'; on: #textFieldContents of: self). self
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请求的调度器装饰应用程序