私は次のBaseModel
クラスを持っています
namespace 'Models', (exports) ->
class exports.BaseModel
toJSON: =>
if @jsonProperties? then ko.toJSON( @, @jsonProperties() ) else null
次に、Profile
クラスを継承する私のBaseModel
クラス
namespace 'Models', (exports) ->
class exports.Profile extends exports.BaseModel
constructor: ( @options ) ->
@FirstName = ko.observable( @options.FirstName )
@LastName = ko.observable( @options.LastName )
@jsonProperties: ->
return [ "FirstName", "LastName" ]
これにより、次のようなものを呼び出すことができます
profile = new Models.Profile
FirstName: 'blah'
LastName: 'blah'
profile.toJSON()
ただし、基本モデル内では、クラス型の静的関数のようなものであるためです@jsonProperties
。undefined
これが欲しい理由は、他のクラスでそれを参照できるようにするためですModels.Profile.jsonProperties()
BaseModel 内からこのようなものにアクセスすることは可能ですか?
編集:より良いものを思いつくまで、プレースホルダーの修正を追加します
機能させるために次のことを行いましたが、作成するすべてのモデルでこの行を繰り返す必要はなく、BaseModel からこれを行う一般的な方法があるようです。
namespace 'Models', (exports) ->
class exports.Profile extends exports.BaseModel
constructor: ( @options ) ->
@jsonProperties = Models.Profile.jsonProperties