BeforeFilters in RoR are a great way to manage controller accesses or do execute any other specific controller action triggers.
Here is a simple way of mimicking this great RoR feature on Sencha Touch MVC.
Create a file named app/controllers/Controllers.js
with the following content:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Ext.Dispatcher.on('before-dispatch', function(interaction) { if(Ext.isFunction(interaction.controller.beforeFilter)) { return interaction.controller.beforeFilter.call(); }; return true; }); Ext.Dispatcher.on('dispatch', function(interaction) { if(Ext.isFunction(interaction.controller.afterFilter)) { return interaction.controller.afterFilter.call(); }; return true; }); |
Include this in your HTML document.
Now, you can add your beforeFilter action to all your controllers like following:
1 2 3 4 5 6 7 8 9 10 11 |
Ext.regController('TestController', { beforeFilter: function() { console.log('Hi! I am a beforeFilter!'); }, afterFilter: function() { console.log('Hi! I am an afterFilter!'); }, index: function() { App.views.viewport.reveal('testView'); } }); |
Reference: Adding Callbacks to your Sencha Touch Controllers