如何访问助手中的小部件数据
How-to access widget data in helper
在我的前端助手中,我使用一个参数并在任何地方都给它 data.widget。
是否可以在助手上下文中访问 data.widget?我只找到了 self.output 对象树。但我认为这不是一个好的解决方案。
谢谢。
编辑代码示例:
嗯,在模板中,您可以执行以下操作:
{{ apos.myModuleAlias.iCallAHelper(data.widget) }}
和myModule-widgets/index.js的部分:
construct: function(self, options) {
self.addHelpers({
iCallAHelper: function(data) { console.log(data); }
});
}
是否可以在不提供 data.widget 作为参数的情况下访问助手中的 data.widget?
在模板级别将 piece/widget/page 传递给助手是很常见的做法,就像您的插图一样。
如果您的问题是您总是需要一些特殊的data/decision/format基于小部件发生,您可以覆盖小部件的load
方法并附加为您的小部件添加一些特别的东西,然后在您的模板中访问它。
小部件的 index.js
module.exports = {
extend: 'apostrophe-widgets',
...
construct: function(self, options) {
const superLoad = self.load;
self.load = function (req, widgets, callback) {
return superLoad(req, widgets, function (err) {
if (err) {
return callback(err);
}
// `widgets` is each widget of this type being loaded on a page
widgets.forEach(function (widget) {
// do something cool, attach it to widget
widget.somethingCool = 'hello world';
});
return callback(null);
});
};
}
}
然后您就可以在您的模板中访问 data.widget.somethingCool
。
在我的前端助手中,我使用一个参数并在任何地方都给它 data.widget。
是否可以在助手上下文中访问 data.widget?我只找到了 self.output 对象树。但我认为这不是一个好的解决方案。
谢谢。
编辑代码示例:
嗯,在模板中,您可以执行以下操作:
{{ apos.myModuleAlias.iCallAHelper(data.widget) }}
和myModule-widgets/index.js的部分:
construct: function(self, options) {
self.addHelpers({
iCallAHelper: function(data) { console.log(data); }
});
}
是否可以在不提供 data.widget 作为参数的情况下访问助手中的 data.widget?
在模板级别将 piece/widget/page 传递给助手是很常见的做法,就像您的插图一样。
如果您的问题是您总是需要一些特殊的data/decision/format基于小部件发生,您可以覆盖小部件的load
方法并附加为您的小部件添加一些特别的东西,然后在您的模板中访问它。
小部件的 index.js
module.exports = {
extend: 'apostrophe-widgets',
...
construct: function(self, options) {
const superLoad = self.load;
self.load = function (req, widgets, callback) {
return superLoad(req, widgets, function (err) {
if (err) {
return callback(err);
}
// `widgets` is each widget of this type being loaded on a page
widgets.forEach(function (widget) {
// do something cool, attach it to widget
widget.somethingCool = 'hello world';
});
return callback(null);
});
};
}
}
然后您就可以在您的模板中访问 data.widget.somethingCool
。