2

我是一名学习 Smalltalk 并在 Seaside 开发应用程序的人。

应用程序的第一部分将是所谓的管理方面。在这一部分中,我可以定义/管理应用程序用户可以选择的项目。所有用户定义的所有项目都相同。所以我创建了一个名为sportsController 的类。

我使用了此处定义的单例模式:smalltalk 单例模式:如何初始化实例变量?.

在课堂上,我有:

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 通知。所以我可能做错了什么;什么?也就是说有没有更好的方法来做到这一点?主要目标是创建所有会话都使用的类。

顺便说一句,目前我还没有做持久性,除了在图像中。“真正的”持久性将在稍后处理。目前我需要能够添加数据来开发应用程序的客户端。

4

1 回答 1

1

是否有可能在将方法添加到实例端SportsController default之前第一次调用?initialize在这种情况下,您的initialize方法从未被调用。

因此,您可以通过 ,从工作区调用一次SportsController default initialize,或者将类变量设置为并重Defaultnil

于 2013-09-19T14:07:13.087 回答