繁体   English   中英

从CoffeeScript生成的脚本中调用类

[英]Calling class from script generated from 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>

没有运气,找不到应用程序。

任何帮助都会很棒。

保罗

由于CoffeeScript生成的脚本包装在IIFE中,因此在其中声明的所有内容都不会在外部作用域中隐藏-这意味着您需要非常明确地公开自己的内​​容。

您可以通过多种方式来执行此操作,这基本上取决于脚本将在何处运行。 您可以将其分配给浏览器的window ,或者module.exports给node.js的module.exports ,或者使用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对象,以便可以从其他脚本中调用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM