Переопределение выборки в нескольких моделях позвоночника

Мне нужно переопределить Spine's @fetch() метод во всех моих моделях позвоночника. В настоящее время у меня есть дублирование кода следующим образом:

TastypieEndpointMixin =
    fromJSON: (data) ->
        return unless data
        return Spine.Model.fromJSON(data.objects)

class App.models.Position extends Spine.Model
    @configure 'Position', 'code', 'name'
    @extend Spine.Model.Ajax
    @extend TastypieEndpointMixin
    @url: '/api/v1/position/?format=json'

    validate: ->
        'code is required' unless @code

    @fetch: ->
        defer = $.Deferred()
        @one "refresh", ->
            defer.resolve()
        super
        return defer


class App.models.Player extends Spine.Model
    @configure 'Player', 'first_name', 'last_name', ...
    @extend Spine.Model.Ajax
    @extend TastypieEndpointMixin
    @url: '/api/v1/player/?format=json'

    @fetch: ->
        defer = $.Deferred()
        @one "refresh", ->
            defer.resolve()
        super
        return defer

Мой вопрос: как я могу создать некоторую форму родительского класса, который содержит @fetch()?

Я знаю, что это должно быть простой проблемой для решения. Я перепробовал много вариантов (в том числе расширение Spine.Model а также Spine.Model.Ajax), но ничего не работает, и я не могу разобраться с этим.

1 ответ

Вот как я решил точно такую ​​же проблему:

class BasicModel extends Spine.Model

  @fetch: ->
    defer = $.Deferred()
    @one "refresh", ->
      defer.resolve()        
    super
    defer

class App.models.Player extends BasicModel

  #This class now has the fetch() function from the BasisModel

Конечно, вы можете поместить много полезных функций в BasicModel, которые будут доступны во всех других ваших моделях.

Другие вопросы по тегам