1

私は次の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()

ただし、基本モデル内では、クラス型の静的関数のようなものであるためです@jsonPropertiesundefinedこれが欲しい理由は、他のクラスでそれを参照できるようにするためですModels.Profile.jsonProperties()

BaseModel 内からこのようなものにアクセスすることは可能ですか?


編集:より良いものを思いつくまで、プレースホルダーの修正を追加します

機能させるために次のことを行いましたが、作成するすべてのモデルでこの行を繰り返す必要はなく、BaseModel からこれを行う一般的な方法があるようです。

namespace 'Models', (exports) ->
  class exports.Profile extends exports.BaseModel
    constructor: ( @options ) ->
      @jsonProperties = Models.Profile.jsonProperties
4

1 に答える 1