2013-06-28 24 views
0

我想我忘了这个词,所以标题编辑会受到欢迎。我想要做的就是将多个功能我$scope对象,像这样:我可以通过coffeescript中的多行分配给一个对象吗?

$scope. 
     widgetDropped = (event, ui) -> 
     (console.log "widget dropped") 
     dragCallback = (event, ui) ->  # fails 
     console.log("started drag")  # fails 

所以第3行编译罚款,但加在最后2行会导致编译失败。与续行有点混淆,没有运气。是否可以在coffeescript中进行这种多线对象分配?

+0

你熟悉的CoffeeScript?我试图将dragCallback分配给作用域对象,而不将$ scope放在两个地方。 – jcollum

+0

我仍然好奇你在找什么。你看过我的回答吗? –

回答

1

我认为你在寻找这样的事情:

$scope = 
    widgetDropped : (event, ui) -> 
    console.log "widget dropped" 
    dragCallback : (event, ui) -> 
    console.log "started drag" 

之后,你可以打电话给你的功能:

$scope.widgetDropped() # logs "widget dropped" 
$scope.dragCallback() # logs "started drag" 

这里是running example

如果你喜欢它,你可以为清楚起见加括号:

$scope = { 
    widgetDropped : (event, ui) -> 
    console.log "widget dropped" 
    dragCallback : (event, ui) -> 
    console.log "started drag" 
} 
0

如果你想(一次即设置多个属性)$scope这样的扩展

$scope.widgetDropped = (event, ui) -> console.log "widget dropped" 
$scope.dragCallback = (event, ui) -> console.log("started drag") 

,那么你的运气了,没有什么天然的CoffeeScript了点。各种库例如提供功能,虽然,Underscore/Lodash

_($scope).extend(
    widgetDropped: (event, ui) -> console.log "widget dropped" 
    dragCallback: (event, ui) -> console.log("started drag") 
) 

jQuery has one too

有一些走另一条路各种形式的destructured assignment

o = { where: 'is', pancakes: 'house?' } 
{ pancakes } = o 
# pancakes is now 'house?' 

,但没有原生融合技术。

+0

谢谢;它看起来像非常coffeescript-ish语法,它在一行上工作,但不是两个;似乎很奇怪,它不适用于两行 – jcollum

相关问题