Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 如何将木偶事件聚合器正确设置为Require.js模块_Backbone.js_Requirejs_Marionette - Fatal编程技术网

Backbone.js 如何将木偶事件聚合器正确设置为Require.js模块

Backbone.js 如何将木偶事件聚合器正确设置为Require.js模块,backbone.js,requirejs,marionette,Backbone.js,Requirejs,Marionette,我正在尝试将vent/EventAggregator设置为一个单独的Require.js模块。我使用的是Marionette 1.0.2(我相信它的实现与1.0.0之前的旧版本不同),其中包含wreqr:此代码来自主干网。Marionette.js:- // Event Aggregator // ---------------- // A pub-sub object that can be used to decouple various parts // of an app

我正在尝试将vent/EventAggregator设置为一个单独的Require.js模块。我使用的是Marionette 1.0.2(我相信它的实现与1.0.0之前的旧版本不同),其中包含wreqr:此代码来自主干网。Marionette.js:-

        // Event Aggregator
// ----------------
// A pub-sub object that can be used to decouple various parts
// of an application through event-driven architecture.

Wreqr.EventAggregator = (function(Backbone, _){
  "use strict";
  var EA = function(){};

  // Copy the `extend` function used by Backbone's classes
  EA.extend = Backbone.Model.extend;

  // Copy the basic Backbone.Events on to the event aggregator
  _.extend(EA.prototype, Backbone.Events);

  return EA;
})(Backbone, _);
当我设置我的vent.js模块时,它应该是什么?大概是这样的:-

define(['marionette'],function(Marionette){
    return new Marionette.EventAggregator();
})
另外,在我的require配置中,我是否应该显式地包括backbone.wreqr.js?或者仅仅是木偶文件(参见上面的代码片段)就足够了吗

以下是我的app.js供参考:-

require.config({

    paths : {
        backbone : 'lib/backbone',
        underscore : 'lib/underscore',
        jquery : 'lib/jquery',
        marionette : 'lib/backbone.marionette',
        'backbone.wreqr' : 'lib/backbone.wreqr',
        text : 'lib/text',
        templates : '../templates'

    },
    shim : {
        jquery : {
            exports : 'jQuery'
        },
        underscore : {
            exports : '_'
        },
        backbone : {
            deps : ['jquery', 'underscore'],
            exports : 'Backbone'
        },
        marionette : {
            deps : ['jquery', 'underscore', 'backbone'],
            exports : 'Marionette'
        },
        'backbone.wreqr' : {
            deps : ['backbone', 'marionette', 'underscore'],
            exports : 'Wreqr'
        }
    }
})

require(
    ["jquery",
        "underscore",
        "backbone",
        "marionette",
        "backbone.wreqr",
        "shell/shellapp"
    ],
    function($, _, Backbone, Marionette, Wreqr, ShellApp) {
        $(function() {
           //new ShellApp();
            var shell = ShellApp;
            shell.start();
            trace("shell: "+shell);
        });
    }
);
非常感谢大家的帮助

非常感谢

萨姆

\uuuuuuuuuuuuuuuuuuuu****更新

多亏了Paul,我才知道如何让我的vent.js正常工作。仅供参考,我不需要在配置中单独导入wreqr文件。下面是vent.js代码:-

define(['backbone', 'marionette'],function(Backbone, Marionette){
    return new Backbone.Wreqr.EventAggregator();
});


-我想木偶锉就足够了。谢谢保罗·格里姆。遗憾的是,当我遵循教程,只导入木偶(其中包含Wreqr.EventAggregator)并将其用于通风模块时-
define(['marionete'],function(木偶){return new marionete.EventAggregator();})
我在返回行上得到以下错误-Uncaught TypeError:undefined不是函数。你知道会发生什么吗?非常感谢,Sam.
console.log(木偶网,木偶网[“EventAggregator”])
在该模块中查看哪个是未定义的。然后检查
EventAggregator
是否实际包含在木偶JS文件中。事实上,此源代码行-显示
EventAggregator
作为
Backbone.Wreqr.EventAggregator
访问。谢谢Paul。当我搜索控制台中的木偶对象时,Wreqr不在那里。正如您所说,它位于主干对象中,但当我尝试在控制台上登录它时,我无法访问Wreqr对象。我可以在对象浏览器中看到它,但是当我尝试使用console.log(Backbone.Wreqr)时,我没有定义它;或console.log(主干[“Wreqr”]);我的vent.js现在看起来是这样的:-定义(['backbone'],函数(backbone){console.log(backbone.Wreqr);})知道我为什么不能访问Wreqr对象吗?再次感谢,samonette.js文件的代码是否与上面的链接相同?它可能不是相同的版本/文件。即使这样,也可能是单独加载Wreqr文件破坏了这一点。如果您版本的木偶确实有Wreqr字段,请删除
主干.Wreqr
垫片,否则它们可能会冲突。谢谢Paul,我非常感谢您的时间和努力。这对我来说是一个巨大的帮助,因为我在第一个木偶应用程序中遇到了麻烦!我有一个类似的问题,但我试图使用核心amd构建的木偶,并包括wreqr文件分别。尝试创建应用程序的新实例时出现“主干未定义”错误。
require.config({
    paths: {
        backbone: 'http://backbonejs.org/backbone',
        underscore: 'http://underscorejs.org/underscore',
        jquery: 'http://code.jquery.com/jquery-1.9.1',
        marionette: 'http://marionettejs.com/downloads/backbone.marionette'
    },
    shim: {
        jquery: {
            exports: 'jQuery'
        },
        underscore: {
            exports: '_'
        },
        backbone: {
            deps: ['jquery', 'underscore'],
            exports: 'Backbone'
        },
        marionette: {
            deps: ['jquery', 'underscore', 'backbone'],
            exports: 'Marionette'
        }
    }
});

require(["backbone", "marionette"], function (Backbone, Marionette) {
    console.log(Backbone.Wreqr.EventAggregator);
    var ea = new Backbone.Wreqr.EventAggregator();
    console.log(ea);
});