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 は nil です。したがって、MessageNotUnderstood 通知があります。だから私はおそらく何か間違ったことをしています。何?これを行うためのより良い方法はありますか?主な目的は、すべてのセッションで使用されるクラスを作成することです。

ところで、今のところ、私はまだ永続化を行っていません。「本当の」永続性については後で扱います。現時点では、アプリケーションの顧客側を開発するためにデータを追加できる必要があります。

4

1 に答える 1

1

メソッドをインスタンス側にSportsController default追加する前に初めて呼び出した可能性はありますか? initializeこの場合、initializeメソッドは呼び出されませんでした。

そのため、 を介してワークスペースから 1 回呼び出すSportsController default initializeか、クラス変数Defaultを に設定しnilてもう一度試してください。

于 2013-09-19T14:07:13.087 に答える