如何使jquery pubsub作为requirejs模块工作

时间:2013-05-22 17:03:50

标签: javascript requirejs

下面的代码不起作用。当我尝试使用这个模块时,它没有这些方法。看起来我回来了错误的对象?

define([
    'jquery'
], function($ ){

    var o = $({});

    $.subscribe = function() {
        o.on.apply(o, arguments);
    };

    $.unsubscribe = function() {
        o.off.apply(o, arguments);
    };

    $.publish = function() {
        o.trigger.apply(o, arguments);
    };

    return o;
});

2 个答案:

答案 0 :(得分:2)

您可能应该return $(jQuery对象),因为您要使用附加到它的方法,如下所示:

define(['pubsub'], function(pubSub) {
    pubSub.subscribe('test', function(ev) {});
});

使用您的解决方案,您必须这样做:

define(['jquery', 'pubsub'], function($, o) {
    $.subscribe('test', function(ev) {});
});

答案 1 :(得分:1)

解决了这个问题,我怀疑是我正在返回错误的对象。我需要返回jQuery对象。以下代码有效:

define([
    'jquery'
], function($ ){

    var o = $({});

    $.subscribe = function() {
        o.on.apply(o, arguments);
    };

    $.unsubscribe = function() {
        o.off.apply(o, arguments);
    };

    $.publish = function() {
        o.trigger.apply(o, arguments);
    };

    return $;
});