Я новичок в coffeescipt, и я хотел создавать классы, но есть проблема, когда я создаю действие "щелчка" на кнопках, как я могу получить доступ к свойствам класса? и другие функции класса?
Спасибо за эти два ответа, дело в том, что у меня есть один единственный файл, на данный момент не будет столько javascript, поэтому я хотел создать класс и разделил "объекты" по разделам, позвольте мне привести лучший пример:
class SiteName
isMenuActive: false
cartItems: {}
constructor: ->
that = @
$('.openMenu').on 'click', ->
that.menu.open()
menu:
open: () ->
# How can i access "isMenuActive" Here??
# using @ or this, is referer to the item itself, because this action is called with "onclick"
if isMenuActive
alert 'menu is active'
close: () -> console.log 'close menu'
other_action: () -> console.log 'blah'
call_cart_actions: () ->
# how can i call cart properties/functions from "cart" in this same namespace??
cart:
add: () ->
# how to access SiteName.cartItems ¿?
# How to call other class function??
remove: () ->
Проблема, которую я действительно имею, заключается в том, что мне нравится вставлять все мои "триггеры" (щелчок, зависание...) в конструкторе, но, как только я вызову эти функции, как я могу ссылаться на свойства "SiteName" или другие объекты/функции этот класс/пространство имен?
его хорошая практика иметь такой код? имея "меню" и "корзину" на том же "сайте", или лучше держать их на разделенных файлах/классах?
большое спасибо
Основываясь на некоторых исследованиях, которые я сделал, в частности, этот вопрос SO помог:
Классы Coffeescript и объем и толстые и тонкие стрелки
похоже, вам нужно сохранить this
ссылку как часть конструктора. Вот взломанная версия вашего кода, которую я собрал, чтобы продемонстрировать:
class actions
isActive: false
self = {}
constructor: ->
self = @
func:
click: () ->
alert self.isActive
close: () ->
console.log "close function"
f = new actions
f.func.click()