D_N*_*ish 1 requirejs marionette
我正在尝试与它的一些观点共享木偶应用程序.我在这里阅读了wiki ,但这个例子给我留下了一个问题.
我有一个带有几个视图的文件,它们都需要使用请求/响应系统和可能的命令.我不想var MyApp = require('app');在文件中的所有视图中执行此操作.我想出了以下内容,但我认为可能有更好的方法.
例:
//Views.js
define( ["marionette"], function (Marionette) {
var App = function(){
return require('app');
};
var ExampleItemView = Marionette.ItemView.extend({
initialize: function(){
App().request("getInfo", "aboutStuff");
}
});
return Marionette.CollectionView.extend({
itemView: ExampleItemView,
initialize: function(){
App().request("getInfo", "aboutStuff");
}
});
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
我绝对不会将你app注入你的视图,因为它可以创建循环依赖,这总是代码味道(无论它们是否可以解决)到目前为止,简单的解决方案是创建一个单独的(单例)reqres对象,它是由应用程序处理并注入视图.
//reqres.js
define(['backbone.wreqr'], function( Wreqr ){
return new Wreqr.RequestResponse();
});
//app
define(['reqres'], function(reqres){
reqres.setHandlers({
'getInfo' : function(){
return 'foo';
}
});
});
//Views.js
define( ["marionette", "reqres"], function (Marionette, reqres) {
var ExampleItemView = Marionette.ItemView.extend({
initialize: function(){
reqres.request("getInfo", "aboutStuff");
}
});
return Marionette.CollectionView.extend({
itemView: ExampleItemView,
initialize: function(){
reqres.request("getInfo", "aboutStuff");
}
});
Run Code Online (Sandbox Code Playgroud)