Unexpected =在coffeescript类定义中

时间:2013-12-04 18:23:19

标签: coffeescript

我是咖啡脚本的新手,这个定义可能比这个问题本身有更多错误。

鉴于

class window.SlideManager                                                                                                                                                                     
  constructor: (@$contentDiv, @analyticsCanvas) ->                                                                                                                                            
    @iterator = Iterator(@slides)                                                                                                                                                             
    @slides = @$contentDiv.data('slides')                                                                                                                                                     

  nextSlide: ->                                                                                                                                                                               
    try {                                                                                                                                                                                     
      url = @iterator.next()                                                                                                                                                                  
    } catch {                                                                                                                                                                                 
      @iterator = Iterator(@slides)                                                                                                                                                           
      url = @iterator.next()                                                                                                                                                                  
    }                                                                                                                                                                                         

    this.renderSlide(url)                                                                                                                                                                     

  renderSlide: (slide) ->                                                                                                                                                                     
    $.get(slide, {nolayout: 'true'}, (data) ->                                                                                                                                                
      @$contentDiv.contents().replaceWith(data)                                                                                                                                               
      window.setupCanvas($(@analyticsCanvas), window.createChartData(window.getVisitCounts($(@analyticsCanvas))))                                                                             
    )                                                                                                                                                                                         

我在第8行(url = @iterator.next()

上遇到意外=语法错误

有谁知道我可能会缺少什么?

2 个答案:

答案 0 :(得分:5)

你不应该使用大括号:

nextSlide: ->                                                                                                                                                                               
  try                                                                                                                                                                           
    url = @iterator.next()                                                                                                                                                                  
  catch
    @iterator = Iterator(@slides)                                                                                                                                                           
    url = @iterator.next()
  

首先,基础知识:CoffeeScript使用重要的空格来分隔代码块。您不需要使用分号;来终止表达式,结束该行也会这样做(尽管分号仍可用于将多个表达式拟合到一行上)。而不是使用大括号{ }来围绕函数,if语句,开关和try/catch中的代码块,而是使用缩进。

请参阅:http://coffeescript.org/

答案 1 :(得分:0)

您可以尝试在没有brackets{}的情况下使用此功能:

nextSlide: ->                                                                                                                                                                               
  try                                                                                                                                                                           
    url = @iterator.next()                                                                                                                                                                  
  catch
    @iterator = Iterator(@slides)                                                                                                                                                           
    url = @iterator.next()

而不是:

nextSlide: ->                                                                                                                                                                               
    try {                                                                                                                                                                                     
      url = @iterator.next()                                                                                                                                                                  
    } catch {                                                                                                                                                                                 
      @iterator = Iterator(@slides)                                                                                                                                                           
      url = @iterator.next()