2016-01-06 3 views
1

Я пытаюсь получить функцию в трубопровод активов в CoffeeScriptCoffeeScript не работает в трубопроводе активов

Если я использую чистый JavaScript,

mymodel.js

function restrictPlayback(event) { 
    // Trying to stop the player if it goes above 1 second 
    if (event.currentTime > 10) { 
    event.pause(); 
    event.currentTime = 0 
    } 
} 

Это нормально компилируется и функция работает.

Если я ставлю следующее:

mymodel.js.coffee

restrictPlayback = (event) -> 

    # Trying to stop the player if it goes above 10 seconds 
    if event.currentTime > 10 
    event.pause() 
    event.currentTime = 0 

Я получаю следующее сообщение об ошибке

Uncaught ReferenceError: restrictPlayback is not defined 

Что я делаю неправильно?

+0

Я не пишу Coffeescript, но я поставил ваш JS в [js2coffee] (http://js2.coffee/), и у него есть оператор возврата в конце функции. Это также зависит от того, где вы пытаетесь получить доступ к 'restrictPlayback'. –

+1

Проблема не связана с кодом, который вы нам дали. Ваш CoffeeScript компилируется отлично. –

+0

Где вы называете 'restrictPlayback'? Если это прежде, чем вы его объявите, то, вероятно, проблема: –

ответ

1

Я подозреваю, что вы определяете функцию, а затем ожидаете, что она будет иметь глобальную область действия (то есть пригодную для использования в любом месте).

По умолчанию Coffeescript обертывает скомпилированный код в Immediately Invoked Function Expressions (IIFEs), поэтому указанная вами функция действительна только в пределах файла Coffeescript.

Вы можете получить Coffeescript, чтобы прекратить обертывание в IIFE, используя флаг -b при компиляции, хотя гораздо лучше научиться делать вещи способом Coffeescript.

Смежные вопросы