我无法理解为什么这两段代码的行为不同。如果用户分别点击“保存”或“后退”按钮,ClientView会有[ self answer: true ]
或[ self answer: false ]
。
html anchor
callback: [
( self call: ( ClientView new client: Client new ) )
ifTrue: [ self inform: 'Client added' ]
ifFalse: [ self inform: 'Client not added' ] ];
with: 'Add a contact'.
第一部作品很好:
WADelegation > WAAnswerHandler > ClientView
但这是一个问题:
html anchor
callback: [
view := ClientView new client: Client new.
view
onAnswer: [ :answer |
answer
ifTrue: [ self inform: 'Client added' ]
ifFalse: [ self inform: 'Client not added' ] ].
self show: view ];
with: 'Add a contact'.
我认为错误在下面的错误中,我希望它的行为与上面的错误相同。它会产生额外的WAAnswerHandler:
WADelegation > WAAnswerHandler > WAAnswerHandler > ClientView
在任何通知中单击“保存”或“返回”和“确定”从未实际恢复原始组件上的调用,它只是一遍又一遍地显示ClientView。
请注意,以下内容使用show:
和视图中的预定义onAnswer: block
,而上面的内容使用call:
最新测试适用于:
html anchor
callback: [ view := ClientView new client: Client new.
self
show: view
onAnswer: [ :answer |
answer
ifTrue: [ self inform: 'Client added' ]
ifFalse: [ self inform: 'Client not added' ] ] ];
with: 'Add a contact'.
或等效的
html anchor
callback: [ self
show: (ClientView new client: Client new)
onAnswer: [ :answer |
answer
ifTrue: [ self inform: 'Client added' ]
ifFalse: [ self inform: 'Client not added' ] ] ];
with: 'Add a contact'.
NB。基本上,它们是此页面http://book.seaside.st/book/components/calling/show-answer上的最后两个代码示例,只是它们不相同。