Как вы получаете доступ к встроенным методам помощника Compoundjs из ноевального контроллера?

Как вы получаете доступ к встроенным методам помощника Compoundjs из ноевального контроллера?

С контроллера eval'd функции помощника, похоже, загружаются автоматически, и они просто доступны, делая что-то вроде этого:

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

Но не уверен, что лучший способ получить к ним доступ от контроллера, не являющегося eval'd.

Кажется, они расположены в /compound/node_modules_kontroller/lib/helpers.js

1 ответ

Догадаться. Все встроенные вспомогательные методы просто привязаны к объекту контекста контроллера. (Переменная "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);
};

licensed under cc by-sa 3.0 with attribution.