我是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”属性或其他对象/该类/命名空间的函数??
这是一个很好的做法,让代码像这样?将“menu”和“cart”放在同一个“site”类上,或者更好地将它们保存在文件/类中???
非常感谢
答案 0 :(得分:0)
基于我所做的一些研究,特别是这个SO问题有帮助:
Coffeescript classes and scope and fat and thin arrows
看起来您需要将this
引用存储为构造函数的一部分。这是我的代码的黑客版本,我将它们放在一起演示:
class actions
isActive: false
self = {}
constructor: ->
self = @
func:
click: () ->
alert self.isActive
close: () ->
console.log "close function"
f = new actions
f.func.click()