KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
So, I'm writing a web app. Pretty much everything is done client-side, the server is but a RESTful interface. I'm using jQuery as my framework of choice and implementing my code in a Revealing Module Pattern . The wireframe of my code basically looks like this: (function($){ $.fn.myplugin = function(method) { if (mp[method]) { return mp[method].apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof method === 'object' || ! method) { return mp.init.apply(this, arguments); } else { $.error('Method ' + method + ' does not exist on $.myplugin'); } }; var mp = { init : function( options ) { return this.each(function() { // stuff } }, callbacks : {}, addCallback : function(hook_name, cb_func, priority) { // some sanity checking, then push cb_func onto a stack in mp.callbacks[hook_name] }, doCallbacks : function(hook_name) { if (!hook_name) { hook_name = arguments.callee.caller.name; } // check if any callbacks have been registered for hook_name, if so, execute one after the other } }; })(jQuery); Pretty straightforward, right? Now, we're able to register (multiple, hierarchical) callbacks from inside as well as from outside the application scope. What is bugging me: To make the whole thing as extensible as possible, I'd have to resort to something along these lines: foo : function() { mp.doCallbacks('foo_before'); // do actual stuff, maybe some hookpoints in between mp.doCallbacks('foo_after'); } Every single function inside my app would have
Tags (comma-separated)
Save Edits
Cancel