2014-01-13 78 views
0

Backbonejs模型我创建了一个RequireJs模块中的Backbonejs模型方式:更新从另一个Requirejs模块

define(['model/newmodel']), function (Newmodel) { 
    var newmodel = new Newmodel(); 
} 

我创建一个新的模块,我想我的更新newModel,并向

define(['views/view']), function (View) { 
    // I'd like to modify some properties of the 'newmodel' object here 
} 

你有好主意吗 ?

+0

如何要更新吗?这很奇怪,你通常不会使用模块来更新实例。 –

+0

包含这两个定义调用的文件的名称是什么?请记住,您定义的模块基于这些文件名。 –

回答

0

David Sulc的方法肯定是一种方法,但如果您有充分的理由,您绝对可以在Require中传递实例。一般来说,传递类是更有意义的,但如果你有一个“全局对象”对象,直接传递它可能是有意义的。

首先我要开始让您的大小写保持一致:用大写字母命名类和使用小写字母的实例是非常普遍的做法,这会使您将“newmodel”文件/模块重命名为“Newmodel :

define(['model/Newmodel']), function (Newmodel) { 
    var newmodel = new Newmodel(); 
} 

有了这样的,你可以让你的 “newModel,并向”(小写)文件/模块返回实例自身的方式:

定义([ '模型/ newModel,并向']),函数(Newmodel)var newmodel = new Newmodel(); return newmodel; }

一旦你这样做,你的看法可以通过将其在通常通过为所欲为到该实例要求:

define(['model/newmodel', 'views/view']), function (newmodel, View) { 
    // I'd like to modify some properties of the 'newmodel' object here 
    modifyPropertiesOf(newmodel) 
} 
1

你可能想这样做,而不是:

define(['model/newmodel', 'views/view']), function (NewModel, View) { 
    var newmodel = new Newmodel(); 
    var myView = new View({ 
     model: newmodel 
    }); 
} 

您通常使用requireJS确保“类”当你的代码需要他们,而不是通过各地的实例被加载。