Backbone Marionette 可以向所有模块定义添加参数

Backbone Marionette Possible to Add Arguments to all Module Definitions

我在想有没有办法通过标准:

模块,应用程序,Backbone,Marionette,$,_

所有模块声明的参数定义。我不想在 app.module 调用中添加比名称和函数更多的参数,因为那样只会将这些变量传递给包含它们的模块。如果有人知道如何做到这一点,我将不胜感激。

您可以像这样传递额外的参数(来自 Marionette 文档):

MyApp.module("MyModule", function(MyModule, MyApp, Backbone, Marionette, $, _, Lib1, Lib2,     LibEtc){

  // Lib1 === LibraryNumber1;
  // Lib2 === LibraryNumber2;
  // LibEtc === LibraryNumberEtc;

}, LibraryNumber1, LibraryNumber2, LibraryNumberEtc);

http://marionettejs.com/docs/v2.3.0/marionette.module.html#additional-arguments

您可以定义一个额外的函数来使用,例如:

function moduleWrapper(func) {
  var extraArg1 = something, extraArg2 = somethingelse;
  return function() { 
    //Take the arguments obj and convert it to an array
    var args = Array.prototype.slice.call(arguments);
    //splice the extra arguments into the array
    args.splice(5, 0, extraArg1, extraArg2);
    //then call the function passed to the wrapper
    return func.apply(this,args);
  };

}

然后你可以传递一个带参数的函数

function example(MyModule, MyApp, Backbone, Marionette, $, _, extraArg1, extraArg2){}

像这样

MyApp.module("MyModule",moduleWrapper(example));

包装器将使用您想要的参数调用您的原始函数。