Я переписан мой встроенный JS в моих рельсах приложении к coffeescript..and Я новичок в CoffeeScript ...CoffeeScript класса - вызов вызов одного метода класса из другого
Моего подход представляет собой смесь из этих статей:
Мой код:
s = undefined
class App.PhotoLike
settings:
modalElement: $('#myModal')
likeButtonId: '#like'
photo_id: $('.image_info').attr('photo_id')
numberOfLikes: $('#likes_num')
constructor: (@el) ->
console.log('constructor called')
s = @settings
@bindUIActions()
return this
bindUIActions: ->
console.log('bindUIActions called')
$('#myModal').on 'click', '#like', -> likePhoto()
$(document).on "page:change", -> pageChange()
pageChange: ->
console.log('pageChange called')
photo = new App.Photo
likePhoto: ->
console.log('likePhoto called')
url = '/photos/' + s.photo_id + '/like'
$.get url, (data) ->
s.numberOfLikes.html data['likes'] + ' likes'
$(s.likeButtonId).toggleClass 'btn-success'
Это часть модели, которая получает loded с AJAX и один раз, что вызов успешен я делать я создать выше класс (пример):
new (App.PhotoLike)
Моя проблема. Модальное загружается, все кажется хорошим. Но когда я вызвать событие:
$('#myModal').on 'click', '#like', -> likePhoto()
я получаю:
photo.like.self-942fcd8….js?body=1:25 Uncaught ReferenceError: likePhoto is not defined
так, он не знает функцию likePhoto. Я попытался вызвать this.likePhoto и @likePhoto, но это относится к элементу кнопки, который запускает событие.
Так как мне это сделать? Другие подходы приветствуются. я не совсем уверен, что мне нужны классы ... но я действительно хочу структурированный код ...
Yay..it работает ... так просто! Можете ли вы помочь мне по следующему вопросу ... как мне получить переменную s (settings) для работы в классе – martin
Простите, что вы имеете в виду, как предполагалось. Чего вы хотите достичь? – Kumar
У меня есть переменная параметров в верхней части класса, где я устанавливаю различные параметры, необходимые для класса. Поэтому я хочу использовать эти настройки в классе, например. Settings.url – martin