2014-01-26 78 views
0

不知道我在這裏做錯了什麼,但沒有進展。從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> 

沒有運氣,找不到應用程序。

任何幫助將是偉大的。

保羅

回答

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 

將附着Appwindow對象,以便它可以從其他腳本調用。

+0

或者您可能希望在完成所有定義後對window.App做單獨賦值:'window.App = App' –

+0

謝謝,現在就明白了。 – user3039902