2013-05-22 2 views
1

Ниже код не работает. Когда я пытаюсь использовать этот модуль, у него нет этих методов. Похоже, я возвращаю неправильный объект?Как я могу заставить jquery pubsub работать как модуль 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

Вы, вероятно, следует return $ (объект JQuery), так как вы хотите использовать методы, которые вы присоединенные к ней, как это:

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

С вашего решения вы должны сделать:

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

Вы правы, только что нашли проблему. +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 $; 
}); 
Смежные вопросы