2013-07-02 42 views
-1

我想创建这样Backbone.js的创建字符串

var classes = { 
    A: <object here>, 
    B: <object here>, 
    ... 
}; 

new classes[name]() 

对象但是我不能让它在我的骨干应用程序的工作对象。

define([ 
    // Application. 
    "app" 
], 

function(app) { 

    var Partials = app.module(); 

    var classes = { 
    'AccountNavStart' : Partials.Views.AccountNavStart = Backbone.View.extend({ 
     template: 'member/account-nav', 
     serialize: function(){ 
     return { model: this.model }; 
     } 
    }) 
    }; 

    // Required, return the module for AMD compliance. 
    return Partials; 
}); 

,我尝试使用它像这样

new Partials.classes['AccountNavStart']() 

但我得到一个错误

Uncaught TypeError: Cannot read property 'AccountNavStart' of undefined 

任何想法如何解决这个问题?

+0

你不应该回到班?这是被定义的模块。或者,如果您想添加到Partial对象,那么您需要执行'Partials.prototype.classes = ...'。否则'Partials.classes'永远不会被定义。 – Jivings

+0

在返回之前将'classes'保存为'Partials' - 'Partials.classes = classes' –

+0

@VitaliyPetrychuk此作品,请将此作为答案发布 –

回答

1

保存classesPartials返回之前:

function(app) { 
    //... 
    Partials.classes = classes; 
    return Partials; 
});