我开始深入挖掘珊瑚礁,我磕磕绊绊,我真的不知道如何解决......
我有一个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.
。
我猜Reef有自己优雅的方式来做这件事,但我找不到任何地方......某人? :)
答案 0 :(得分: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请求。