2013-03-13 83 views
2

我正在使用布局管理器和RequireJS的Backbone。仅在加载骨干视图时才需要依赖关系

视图1取决于2个依赖关系,如下所示。 该应用程序也有一个名为View2的类似视图 ,它仅依赖于'jquery.fileupload',而不像View1,它具有2个Deps。

define(['jquery.fileupload', 'jquery.fileupload-ui'], function (dep1, dep2) { 

    var View1 = Backbone.View.extend({ 

     ... 

    }); 

    return View1; 

}); 

的问题是,“jquery.fileupload-UI”(第二依赖)似乎要装载/ requireJS评估,即使我不访问依赖于它的视图,并导致一些插件错误(我在一个视图中使用基本的fileupload插件,并在另一个视图中使用扩展的fileupload插件)。它看起来像define()马上预加载模块。

如何避免在应用程序初始化时加载第二个依赖项,并只在我的视图中加载它? 我想我可以将require()调用嵌套到View1, 的定义中,但是我不知道如何在嵌套调用时返回值。

+2

Require.js应该加载视图,所以如果你在View2的时候没有创建View1的实例,你应该没有问题。你最好专注于你得到的插件错误,然后解决它 - 也许你可以在这里发布它的一部分? – snedkov 2013-03-13 11:39:55

回答

0

任何时候当你模块加载view1模块时,'jquery.fileupload-ui'将被加载。如果在模块加载view1时某些情况下你只需要这个模块,那么只有在达到某个代码路径时,才可以在'jquery.fileupload-ui'中使用view1 require()。

您可以通过在需要该库的view1中的特定方法中添加require(['jquery.fileupload-ui'], function(jqui){...});来实现此目的。

我不确定这是否回答你的问题,但我认为可能。