从CoffeeScript生成的脚本调用类

时间:2014-01-26 04:28:21

标签: javascript jquery coffeescript

不确定我在这里做错了什么但没有走远。

我使用Coffeescript创建了一个类:

# CoffeeScript
App=    
        Title:""
        TopMenu:[]
        AddTopMenu:(title,count,icon)->
            Record=
                Title:title
                Icon:icon
                Count:count                                    
                AddSubMenu:(title,icon,count) ->
                    Title:title
                    Icon:icon 
                    Count:count

输出:

(function() {
  var App;



  App = {
    Title: "",
    TopMenu: [],
    AddTopMenu: function(title, count, icon) {
      var Record;
      return Record = {
        Title: title,
        Icon: icon,
        Count: count,
        AddSubMenu: function(title, icon, count) {
          return {
            Title: title,
            Icon: icon,
            Count: count
          };
        }
      };
    }
  };

}).call(this);

问题是,如何调用App.Title或App.AddTopMenu?

我尝试了以下内容:

<script>
  App.Title="asdasd";
</script>
<script>
var test = new App();
test.Title="asdasd";
</script>

没有运气,找不到App。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

因为CoffeeScript生成的脚本包含在IIFE中,所以在其中声明的任何内容都隐藏在外部范围内 - 这意味着您需要非常具体地了解您所暴露的内容。

您可以通过多种方式执行此操作,这主要取决于脚本的运行位置。您可以将其分配给浏览器的window,或者将module.exports分配给node.js,或使用Require.js之类的东西进行依赖关系管理。

由于您似乎要在浏览器中使用它,您可能希望执行以下操作:

window.App =    
    Title: ""
    TopMenu: []
    AddTopMenu: (title, count, icon)->
        Record =
            Title: title
            Icon: icon
            Count: count                                    
            AddSubMenu: (title, icon, count) ->
                Title: title
                Icon: icon 
                Count: count

App附加到window对象,以便可以从其他脚本调用它。