2013-06-28 26 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

相關問題