2013-12-04 2 views
1

Я новичок в скрипте кофе, и, вероятно, в этом определении есть больше ошибок, чем эта проблема.Неожиданно = в определении класса 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())

Кто-нибудь знает, что я мог бы быть не хватает?

ответ

5

Вы не должны использовать фигурные скобки:

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

Во-первых, основы: CoffeeScript использует значительные пробелы для разделения блоков кода. Вам не нужно использовать точки с запятой ; для завершения выражений, и завершение строки будет выполняться точно так же (хотя точки с запятой все еще могут использоваться для установки нескольких выражений на одну строку). Вместо использования фигурных скобок {} для блокировки блоков кода в функциях, if-statements, switch и try/catch, используйте отступ.

См: http://coffeescript.org/

+2

Чтобы объяснить немного дальше: Брекеты в CoffeeScript используются для обозначения объектных литералов. Итак, это то, что '{url = @ iterator.next()}' означает объект, который, очевидно, не является правильным синтаксисом для этого. – Chuck

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() 
Смежные вопросы