2015-10-11 53 views
0

因此,我试图使用Backbone在NodeJS中扩展2个模型。我的文件是:如何使用Backbone在NodeJS中扩展模块的新实例

Form.js

var Backbone = require('backbone'); 

var Form = Backbone.Model.extend({ 
    _FormFields: [], 
    AddField: function(Field) { 
     this._FormFields.push(Field); 
    } 
}); 

module.exports = Form; 

Register.js

var Form = require('../../../System/Libraries/Form'); 
var Input = require('../../../System/Libraries/Fields/Input'); 

var RegisterForm = Form.extend({ 
    Render: function() { 
     this.AddField(new Input('Username')); 
     this.AddField(new Input('Password')); 
     this.AddField(new Input('PasswordConfirm', 'Password Confirm')); 
    } 
}); 

var fn = function() { 
    var Module = new RegisterForm(); 

    return Module; 
} 

module.exports = fn; 

,我想每一次当我需要它,并调用渲染功能过于创建表单的新实例,并延伸它。

var Module = require('../../Application/Modules/Register/Register')(); 
if (Module.Render !== undefined && typeof(Module.Render) == 'function') { 
     Module.Render(); 
} 

当我需要它现在多次即时通讯recieving RegisterForm的新实例中Form._FormFields(N×3)的字段。

+0

你有没有在服务器端使用Bakcbone集合和模型的示例节点应用程序?想看看它是如何完成的。 – tomalex

回答

0

您必须得到Form原型的_FormFields。当您创建Form并在其中分配this._FormFields = []时,将initialize()方法传递给extend()

+0

谢谢你的回答,它的工作,但是有没有办法将这段代码放在Form.js中,这样每个扩展Form.js的类都可以在不手动使用它的情况下使用它? –

+0

你把它放在哪里?它应该在调用'extend()'的'Form.js'中。然后,如果你扩展了'Form'并且你在子类上定义了一个'initialize()'方法,那么从它调用'Form'的'initialize()'。 – JMM

+0

我把它放在Register.js中,现在当我像你说的那样把它放在Form.js中时,它的工作就像我想要的一样。谢谢 :) –