2012-04-01 5 views
0

Это может оказаться глупой опечаткой, но просто в том, что есть Gotcha об этом. Я только начинаю с приложения CoffeeScript внутри rails.Инициализировать класс coffeescript (backbone) из HTML

Я создал класс PeopleView в people.js.coffee:

class PeopleView extends Backbone.View 
.... 

Я пытаюсь инициализировать его из HTML файла:

<script language="text/javascript"> 
    $(document).ready(function() { 
     var view = new PeopleView(); 
    }); 
</script> 

я получаю сообщение об ошибке, PeopleView не определен , В скомпилированном приложении application.js я вижу, что PeopleView определен. Есть ли что-то, что нужно сделать для инициализации классов за пределами файла coffeescript?

- Edit

Я просто заметил, что набрав

window.PeopleView = PeopleView 

в нижней части файла people.js.coffee сделает его работу. Это хороший метод?

+0

Да, и это также помогает в тестировании вашего кода в консоли браузера. –

ответ

1
window.PeopleView = PeopleView 

Да, это правильный метод. Код CoffeeScript будет скомпилирован в анонимный вызов функции, поэтому все объявления будут ограничены областью этой функции, если вы не сделаете их видимыми во внешней области, назначив свойство окна.

Это помогает предотвратить случайную перезапись глобальных переменных.