Используя приведенный выше совет о dynamicHelpers и магии замыканий, я нашел довольно элегантное решение, которое работает без использования объекта запроса.Хитрость заключается в том, чтобы обернуть переменную заголовка страницы в замыкание, обеспечивающее функции get () и set (), и сделать этот объект-обертку результатом динамического помощника page_title.
Создайте property.js:
exports.create = function () {
var value = null;
return {
get: function () {
return value;
},
set: function (new_value) {
value = new_value;
}
};
}
Таким образом, вызов create () возвращает объект с методом get () и set (), который получает и устанавливает переменную closure.
Затем в коде установки вашего приложения:
var property = require("./property.js");
app.dynamicHelpers ({
page_title: function () {
return property.create ();
}
});
Поскольку значение динамического помощника является результатом вызова его функции, в вашем представлении и шаблоне переменная page_title будет объектом-оболочкойс функциями get () и set ().
По вашему мнению, вы можете сказать:
- page_title.set ("my specific page title");
А в макете:
title= page_title.get()
Длянемного упростим это, добавив это в property.js:
exports.creator = function () {
return function () {
return exports.create();
};
}
Позволяет упростить блок объявления динамических помощников до этого:
var property = require("./property.js");
app.dynamicHelpers ({
page_title: property.creator()
});