如何从noeval控制器访问内置的Compoundjs辅助方法?

时间:2013-07-29 20:47:58

标签: node.js compoundjs

如何从noeval控制器访问内置的Compoundjs辅助方法?

从一个eval'd控制器中,辅助函数似乎自动加载,只需执行以下操作就可以访问它们:

before('protectFromForgery', function () {
    protectFromForgery('some_secret_key');
});

但不确定从非评估控制器访问它们的最佳方法是什么。

它们似乎位于/compound/node_modules_kontroller/lib/helpers.js

1 个答案:

答案 0 :(得分:0)

想出来。所有内置辅助方法都只是附加到控制器上下文对象。 (以下示例中的变量'c')

所以你会做这样的事情:

//Example of noeval controller: app/controllers/car.js:

module.exports = CarController;

// load parent controller
var Essentials = require('./essentials');

function CarController(init) {
    // call parent constructor
    Essentials.call(this, init);

    init.before(function protectFromForgery(c) {
        c.protectFromForgery("some_secret_key");
    }, {only: 'accelerate'});

}

// setup inheritance
require('util').inherits(CarController, Essentials);

CarController.prototype.accelerate = function(c) {
    c.send(++this.speed);
};

CarController.prototype.brake = function(c) {
    c.send(++this.speed);
};