这个javascript代码片段有什么作用?

时间:2011-11-20 14:54:45

标签: jquery ruby-on-rails haml coffeescript

这是一个简短的问题,因为我没有找到使用Google的正确答案。 好吧,我有这个Rails项目,它有很多JavaScript文件(CoffeeScript实际上),看起来得到滚动的代码就是这个......

index.html.haml

:javascript
  $(document).ready(function () {
    window.Application.init()
  });

这就是里面的全部,我不知道该行是什么: window.Application.init()吗?你能解释一下吗?

我认为这非常重要,因为该项目主要是一堆coffescript文件,几乎没有任何服务器端处理。

提前致谢!

编辑:(我找到了Application类的代码)

class Application
  # Creates the map by using the geolocation center
  # Returns a deferred promise with the bounds
  setup = (position) ->
    deferred = new $.Deferred()
    Ext.setup
      glossOnIcon: false
      onReady: ->
        Application.mapPanel = new MapPanel(position, deferred)
        Application.loading = new Ext.LoadMask( Ext.getBody(), { msg: "Loading..." } )

    deferred.promise()

  # Handles the geolocation error.
  @onFail = ->
    Ext.setup
      onReady: ->
        new Ext.Panel
          fullscreen: true,
          dockedItems: [],
          items: []

        Ext.Msg.confirm "Position Unavailable",
          "Can not confirm your location. Would you like to go to the instructions page?",
          (button) ->
            document.location = if button == "no" then "/posts" else "/instructions"

  @init = ->
    Geolocation.onStart = (position) ->
      $.when(setup(position)).pipe(Post.latest).then (data) ->
        Application.mapPanel.paintPosts data

    Geolocation.onUserRejected = @onFail
    Geolocation.init()

window.Application = Application

3 个答案:

答案 0 :(得分:3)

嗯...它运行的函数window.Application.init可能附加到其他coffeescript文件中的window。查找包含class window.Applicationwindow.Application =

的文件

答案 1 :(得分:2)

回答您的后续问题:

window.Application = Application

有效地将本地参考“应用”推广到全局符号。浏览器中的window对象是全局范围,因此全局变量是window属性的引用。因此,创建window的属性并将其设置为某个值(对象,在这种情况下可能是函数;我对Coffeescript不太了解)会使该值在全局范围内可用。

答案 2 :(得分:0)

它启动使用coffeescript构建的应用程序。查看应用程序的初始化程序并逐步调试它。