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));
包装器将使用您想要的参数调用您的原始函数。
我在想有没有办法通过标准:
模块,应用程序,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));
包装器将使用您想要的参数调用您的原始函数。