Это первый раз, когда я использовал наследование в coffeescript.Как вызвать методы из расширенного класса в coffeescript
Я пытаюсь вызвать метод из расширенного класса, но метод @create из window.StreamingStation дает мне this.create не является функцией
class window.BaseClass
constructor: (options) ->
@key = options['key']
@content_id = null
@rtapi = options['rtapi']
@switch = $('input[name="activate_autodj"]')
@setup()
class window.StreamingStation extends window.BaseClass
constructor: (options) ->
super
list:() ->
$.ajax
url: @rtapi + '/api/StreamingStation/list'
type: 'get'
data:
query:
data:
contentId: @content_id
token: @key
success: (data) ->
console.log(data)
return
create:() ->
alert 'fsafsa'
return
class window.AutoDj extends window.StreamingStation
constructor: (options) ->
super
setup: ->
@bindings()
@activateAutoDj()
bindings:() ->
$('input[type="checkbox"]').bootstrapSwitch({size: 'mini'});
activateAutoDj:() ->
$('input[data-id]').on 'switchChange.bootstrapSwitch', (event, state) ->
@create()
state = (state == true ? 1 : 0)
@content_id = $(this).attr('data-id')
$.ajax
url: "/autodjs/#{@content_id}/activate_autodj"
type: 'post'
data: {state: state}
async: true
success: (data) ->
if (data.error == 0)
else
@raiseSystemAlert(data.message)
error: (data) ->
@raiseSystemAlert('Unexpected error, Please try again.')
raiseSystemAlert: (message) ->
modal = $('#systemAlertModal')
modal.find('.modal-body').html(message)
modal.modal('show')
Спасибо, ребята заранее
было некоторое время, так как я сделал CoffeeScript, но на первый взгляд кажется, что вы не связываясь с 'this' контекста в' ... 'switchChange .bootstrapSwitch '... 'обработчик событий. Попытайтесь использовать жирную стрелу/хеш-ракету ('=>') для этой функции. Дай мне знать, если это работает. –
@ это so @create() равно этому. Создайте() –
Правильно. Но обработчик события называется «асинхронно», а его «этот» контекст не будет «этим» экземпляра «AutoDj». –