【问题标题】:How do I append a javascript-function to another javascript-function?如何将 javascript 函数附加到另一个 javascript 函数?
【发布时间】:2014-02-07 22:20:33
【问题描述】:

我如何定义,当另一个特定的 javascript 函数被调用和执行时,一个 javascript 函数将被调用?

var UploadStatusController= {
var uploadedcount,

    UpdateStatus: function (numberOfUploadedFiles) {
     UploadStatusController.uploadedcount += numberOfUploadedFiles;
    });
},


var DisplayController{
UpdateInfoBox: function () {
      $('#Infobox').InnerHtml = UploadStatusController.uploadedcount;

    });
}

我不想从 UploadStatusController 调用我的 DisplayController, 而且我也不想将我的 DisplayController 作为变量传递给 UploadStatusController。 相反,我正在寻找一种方法将我的函数绑定到对另一个函数的调用,其方式类似于将其绑定到文档事件。

【问题讨论】:

标签: javascript function events listener


【解决方案1】:
var uploadStatusController = {};
(function () {
    var subscribers = [];

    var uploadedCount = 0;

    uploadStatusController.updateStatus = function (numberOfUploadedFiles) {
        uploadedCount += numberOfUploadedFiles;

        // call subscribers
        callSubscribers();
    };

    uploadStatusController.subscribe = function (fn) {
        subscribers.push(fn);
    };
    function callSubscribers() {
        for (var i = 0, len = subscribers.length; i < len; i++) {
            subscribers[i].apply(this, [uploadedCount]);
        }
    };
}());

// subscribe to event from anywhere you need
uploadStatusController.subscribe(function (uploadedCount) {
    console.log(uploadedCount);
});

【讨论】:

  • 我也想过这样的事情,除了我会传递控制器而不是函数。我更喜欢你的。这两种方法都有一个缺点:它们无法扩展。每当您想使用此模式时,都需要使用一些函数和变量来扩展控制器。
猜你喜欢
  • 2012-12-20
  • 2012-08-05
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 2014-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多