2013-08-24 21 views
0

我正在爲使用requireJS和這種我從未見過的奇怪語法的網站開發腳本。如何訪問函數和對象requireJS模塊

define("app/models/UserModel", ["backbone", "lang/Lang"], function (e, t) { 
    var n = e.Model.extend({ 
     defaults: { 
      item: "", 
      these: "", 
      arent: "", 
      important: "en", 
      relationship: 0, 
      _position: { 
       c: 0, 
       r: 0 
      } 
     }, 
     hasPermission: function (e) { 
      return this.get("permission") >= e 
     }, 
     getTotalPoints: function() { 
      return this.get("somestuff") 
     } 
    }); 

我使用要求([「應用/模型/的usermodel」])加載模塊並要求(「應用程序/模型/的usermodel」)。缺省嘗試加載對象和相同的方法嘗試和使用這些功能,但它只是回來說它們不存在。我已經能夠以同樣的方式訪問另一個模型中的功能,但其他大多數功能都不起作用。

除此之外,我想知道如果var n = e.Model.extend與它有任何關係。我不明白它的功能是什麼。

回答

0

該結構是異步模塊加載工作所必需的。 RequireJS模塊在define調用的函數中構造;該功能應該是return the public interface of the module。在你的情況下,你需要這樣的東西:

define("app/models/UserModel", ["backbone", "lang/Lang"], function (backbone, lang) { 
    var MyModel = backbone.Model.extend({ 
     defaults: { 
      item: "", 
      these: "", 
      arent: "", 
      important: "en", 
      relationship: 0, 
      _position: { 
       c: 0, 
       r: 0 
      } 
     }, 
     hasPermission: function (e) { 
      return this.get("permission") >= e 
     }, 
     getTotalPoints: function() { 
      return this.get("somestuff") 
     } 
    }); 

    // return the created model object so that it is 
    // accessible as require("app/models/UserModel").default_ 
    return { 
     default_: MyModel 
    } 
}); 

(注意,我不熟悉Backbone,雖然)。另外,我猜你正在使用的模塊被縮小,然後被美化,因爲變量名是長1個字母,並且不是很助記符?此外,default是一個關鍵字,用於switch語句中,並且根本不是有效的變量名稱。

相關問題