Вы можете решить (как минимум) это двумя способами в зависимости от желаемой структуры.
1.Явные параметры браузера
Вы можете явно передать параметры браузеру из конфигурации модулей, обернув их в объект browser
из корня конфигурации модуля.
в lib/modules/layout-widgets/index.js
module.exports = {
extend: 'apostrophe-widgets',
label: 'Layout',
browser: {
coolArray: [3, 2, 1]
}
}
Это будет объединено с параметрами, автоматически передаваемыми JS модуля на стороне браузера.
, затем в /lib/modules/layout-widgets/public/js/always.js
apos.define('layout-widgets', {
extend: 'apostrophe-widgets',
construct: function (self, options) {
self.play = function ($widget, data, options) {
console.log(self.options.coolArray);
}
}
});
2.Super'ing getCreateSingletonOptions
Если вам не нравится синтаксис отделения опций браузера от ваших основных опций, вы всегда можете переопределить метод, отвечающий за настройку опций модуля на стороне браузера, скопировав его,вызывая его и добавляя к нему
в lib/modules/layout-widgets/index.js
module.exports = {
extend: 'apostrophe-widgets',
label: 'Layout',
coolArray: [3,2,1],
construct: function(self, options) {
// copy the method
var superGetCreateSingletonOptions = self.getCreateSingletonOptions;
// redefine it
self.getCreateSingletonOptions = function (req) {
// invoke the original method and save the result
var browserOptions = superGetCreateSingletonOptions(req);
// add on to the default results with whatever you want
browserOptions.coolArray = self.options.coolArray;
browserOptions.somethingElse = 'hey this is fun';
return browserOptions;
};
}
};
, затем снова в /lib/modules/layout-widgets/public/js/always.js
apos.define('layout-widgets', {
extend: 'apostrophe-widgets',
construct: function (self, options) {
self.play = function ($widget, data, options) {
console.log(self.options.coolArray);
console.log(self.options.somethingElse);
}
}
});