我正在学习Smalltalk并在Seaside开发应用程序。
应用程序的第一部分将是所谓的管理方。在这部分中,我可以定义/管理允许应用程序用户选择的项目。定义的所有项目对所有用户都是相同的。所以我创建了一个名为sportsController的类。
我使用了此处定义的单例模式:smalltalk singleton pattern: how do I initialize the instance variables?。
在课堂上我有:
default
^ Default ifNil: [ Default := self new ]
在我的实例上:
initialize
sports := OrderedCollection new.
和
sports
^ sports
当我打电话给我的观点时:
manageSports
view := SportsAdminView new model: SportsController default
方法'manageSports'被称为回调。当我运行视图时,执行以下代码:
renderContentOn: html
html anchor
callback: [self addSport];
with: 'Add new sport'.
html
unorderedList: [self model sports
do: [:value | html
listItem: [self renderSport: value on: html]]].
当我运行时#sports是零。所以有一个MessageNotUnderstood通知。所以我可能做错了什么;什么?那说有更好的方法吗?主要目标是创建所有会话使用的类。
BTW目前我还没有做到持久性,其他的则是在图片中。 “真正的”持久性将在稍后处理。目前,我需要能够添加数据以开发应用程序的客户端。
答案 0 :(得分:1)
在将SportsController default
方法添加到实例端之前,您是否有可能第一次调用initialize
?在这种情况下,您的initialize
方法从未被调用。
因此,您可以通过SportsController default initialize
从工作区调用一次,或者将类变量Default
设置为nil
并再次尝试。