Переопределение выборки в нескольких моделях позвоночника
Мне нужно переопределить 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, которые будут доступны во всех других ваших моделях.