diff --git a/index.js b/index.js index 7789c21..91ea7bf 100644 --- a/index.js +++ b/index.js @@ -61,7 +61,9 @@ function Resource(name, actions, app) { // default actions for (var i = 0, key; i < orderedActions.length; ++i) { key = orderedActions[i]; - if (actions[key]) this.mapDefaultAction(key, actions[key]); + var handler = actions[key]; + if (typeof handler === 'function') handler = handler.bind(actions); + if (handler) this.mapDefaultAction(key, handler); } // auto-loader diff --git a/test/resource.test.js b/test/resource.test.js index ee22990..c64d009 100644 --- a/test/resource.test.js +++ b/test/resource.test.js @@ -1,6 +1,7 @@ var assert = require('assert') , express = require('express') + , should = require('should') , Resource = require('..') , request = require('supertest') , batch = require('./support/batch'); @@ -55,6 +56,21 @@ describe('app.resource()', function(){ .expect('destroy forum 5', next()); }) + it('should bind this correctly', function(done) { + var app = express(); + var testController = { + 'users': 'userA userB', + 'index': function(req, res) { + res.send(this.users); + } + }; + + app.resource('users', testController); + request(app) + .get('/users') + .expect('userA userB', done); + }); + it('should support root resources', function(done){ var app = express(); var next = batch(done);