From fbe4d7f2ffa716cc5e576134e04ba2c44db1e1f7 Mon Sep 17 00:00:00 2001 From: kbparagua Date: Wed, 16 Mar 2016 00:02:07 +0800 Subject: [PATCH] Add "all" action" --- test_app/app/assets/javascripts/application.js | 5 +++++ vendor/assets/javascripts/paloma/agent.js | 14 +++++++++----- vendor/assets/javascripts/paloma/engine.js | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/test_app/app/assets/javascripts/application.js b/test_app/app/assets/javascripts/application.js index eb39a80..232a5fe 100644 --- a/test_app/app/assets/javascripts/application.js +++ b/test_app/app/assets/javascripts/application.js @@ -38,6 +38,7 @@ Paloma.controller('Application', { // ], before: [ + 'all -> performThis', 'show -> doSomething' ], @@ -47,6 +48,10 @@ Paloma.controller('Application', { doSomething: function(){ console.log('Do something'); + }, + + performThis: function(){ + console.log('Perform This!'); } }); diff --git a/vendor/assets/javascripts/paloma/agent.js b/vendor/assets/javascripts/paloma/agent.js index 46713f3..2278ba8 100644 --- a/vendor/assets/javascripts/paloma/agent.js +++ b/vendor/assets/javascripts/paloma/agent.js @@ -6,16 +6,16 @@ Paloma.Agent.prototype = { perform: function(action){ var callbacks = this._getCallbacksFor(action); - this._executeCallbacks.call(callbacks); + this._executeCallbacks(callbacks); }, _getCallbacksFor: function(action){ var callbacks = []; for (var i = 0, n = this.controller.before.length; i < n; i++){ - var entry = parseEntry( this.before[i] ); + var entry = this._parseEntry( this.controller.before[i] ); - if ( entry.methods.indexOf(methodName) != -1 ) + if ( this._methodIsIncluded(action, entry.methods) ) callbacks = callbacks.concat(entry.callbacks); } @@ -32,14 +32,18 @@ Paloma.Agent.prototype = { return data; }, + _methodIsIncluded: function(name, methods){ + return methods.indexOf(name) != -1 || methods.indexOf('all') != -1; + }, + _executeCallbacks: function(callbacks){ for (var i = 0, n = callbacks.length; i < n; i++){ var name = callbacks[i], callback = this.controller[name]; - callback.call(this.controller); + if (callback) callback.call(this.controller); } - }; + } }; diff --git a/vendor/assets/javascripts/paloma/engine.js b/vendor/assets/javascripts/paloma/engine.js index 30d6338..e2c307b 100644 --- a/vendor/assets/javascripts/paloma/engine.js +++ b/vendor/assets/javascripts/paloma/engine.js @@ -43,7 +43,7 @@ Paloma.Engine.prototype = { var action = controller[ this._request.action ]; if (action){ - var agent = Paloma.Agent(controller); + var agent = new Paloma.Agent(controller); agent.perform( this._request.action ); this._lastRequest.executed = true;