Почему мои функции coffeescript недоступны из моего HTML-кода?

Я использую rails-backbone, coffeescript gems в своем проекте rails 3.2.6.

square = (x) -> x * x alert square(5)

это файл сценария blog.js.coffee, который он создает:

(function() { var square; square = function(x) {return x * x;}; alert(square(5));

Мне нужно вызвать метод square() в другом файле представления.

Как я могу это назвать? Есть ли что-то неправильное, что я делаю?


person Ponnusamy    schedule 15.07.2013    source источник


Ответы (2)


Весь ваш код в Coffeescript будет находиться внутри самовызывающейся анонимной функции.

Чтобы вызвать его вне файла, просто напишите:

window.square = (x) -> x * x 

alert(square(5)) в другой функции

Лучшее, что вы можете сделать, чтобы не злоупотреблять окном, — это объект приложения, который будет содержать все ваши переменные.

window.App={}
window.App.square=  (x) -> x * x 

а потом alert(App.square(5))

person edi9999    schedule 15.07.2013
comment
Что такое Самоанонимная функция? - person Ponnusamy; 25.07.2013
comment
Самовызывающаяся анонимная функция — это функция без имени (следовательно, анонимная), которая вызывает сама себя. Он используется для защиты кода от доступа извне функции. Вот конкретный вопрос по этому поводу. - person edi9999; 25.07.2013

Назовите это как обычную функцию JavaScript:

<script>    
  square(5)
</script>
person Ryan Bigg    schedule 15.07.2013
comment
Это не сработает, так как в области видимости не будет функции square. - person mu is too short; 15.07.2013