2014-02-07 3 views
0

Как я могу определить, что должна быть вызвана функция javascript, всякий раз, когда вызывается и выполняется другая конкретная функция javascript?Как добавить javascript-функцию в другую функцию javascript?

var UploadStatusController= { 
var uploadedcount, 

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


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

    }); 
} 

Я не хочу называть мое DisplayController из UploadStatusController, и я не хочу, чтобы передать мое DisplayController в UploadStatusController в качестве переменной. Вместо этого я ищу способ привязать свою функцию к вызовам другой функции так же, как привязать ее к документу-событию.

+0

Подробнее о * аспектно ориентированном программировании * и шаблоне * декоратора *. См. Возможную реализацию в [Добавить строку кода ко всем функциям] (http://stackoverflow.com/questions/15618309/add-a-line-of-code-to-all-functions) – Bergi

ответ

0
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); 
}); 
+0

Я думал о чем-то подобном также, за исключением того, что я бы передал контроллер вместо функции. Мне нравится твоя лучше. Оба подхода имеют один недостаток: они не масштабируются. Всякий раз, когда вы хотите использовать этот шаблон, контроллер должен быть расширен с помощью некоторых функций и переменных. – Maral

Смежные вопросы