Доступ к свойствам и методам класса из события onclick

0

Я новичок в 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" или другие объекты/функции этот класс/пространство имен?

его хорошая практика иметь такой код? имея "меню" и "корзину" на том же "сайте", или лучше держать их на разделенных файлах/классах?

большое спасибо

Теги:
coffeescript

1 ответ

0
Лучший ответ

Основываясь на некоторых исследованиях, которые я сделал, в частности, этот вопрос 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()
  • 0
    Спасибо Джейсон, это хорошее решение, пока я не найду лучший путь или пока не найду другие решения, которые я буду использовать ваши.
  • 0
    Да, возможно, это можно сделать с помощью CoffeeScript, но я не смог найти никаких документов, которые бы указывали на это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню