apply / trigger不传递正确的参数

时间:2013-04-19 18:43:25

标签: javascript jquery events publish-subscribe

我的jQuery代码遇到了一个奇怪的问题。我有一个设置as follows

(function($) {
    var o = $({});

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

(function($) {

    var CarrierView = {
        subscriptions: function() {
            $.subscribe( 'reporting.carrier.model.changed', this.renderModel );
        },
        renderModel: function( e, data ) {
            var self = CarrierView;
        }
    };

    var CarrierModel = {
        subscriptions: function() {
            $.subscribe( 'reporting.carrier.model.update', this.updateModel );
        },
        updateModel: function( value ) {
            $.getJSON('carriers', function( data ) {
                $.publish( 'reporting.carrier.model.changed', data );
            });
        }
    };

    window.CarrierView = CarrierView.init();
    window.CarrierModel = CarrierModel.init();
})(jQuery);

运行一个非常基本的pub / sub。我的问题如下:

点击事件会触发CarrierModel.updateModel方法,该方法会调用$.getJSON。返回的dataArray[99],然后publish。调用CarrierView.renderModel时,data的第一个元素是Array[99]Array[5]。我做错了什么?如何将整套data传递给视图?

0 个答案:

没有答案