mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
Improvements to initialization of widgets nested in async-fragment tags
This commit is contained in:
parent
5bc4abc018
commit
5d233fcb53
@ -1,7 +1,6 @@
|
||||
'use strict';
|
||||
var WidgetDef = require('./WidgetDef');
|
||||
var uniqueId = require('./uniqueId');
|
||||
var WIDGET_CONTEXT_KEY = 'widgets';
|
||||
var initWidgets = require('./init-widgets');
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
var inherit = require('raptor-util/inherit');
|
||||
@ -84,8 +83,9 @@ inherit(WidgetsContext, EventEmitter);
|
||||
WidgetsContext.getWidgetsContext = function (out) {
|
||||
var global = out.global;
|
||||
|
||||
return global[WIDGET_CONTEXT_KEY] ||
|
||||
(global[WIDGET_CONTEXT_KEY] = new WidgetsContext(out));
|
||||
return out.widgets ||
|
||||
global.widgets ||
|
||||
(global.widgets = new WidgetsContext(out));
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -78,6 +78,7 @@ WrappedString.prototype = {
|
||||
}
|
||||
};
|
||||
|
||||
exports.WidgetsContext = WidgetsContext;
|
||||
exports.getWidgetsContext = WidgetsContext.getWidgetsContext;
|
||||
exports.uniqueId = require('./uniqueId');
|
||||
exports.attrs = function(widget) {
|
||||
@ -128,7 +129,7 @@ exports.writeInitWidgetsCode = function(widgetsContext, out, options) {
|
||||
} else {
|
||||
var widgets = widgetsContext.getWidgets();
|
||||
|
||||
if (!widgets) {
|
||||
if (!widgets || !widgets.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -35,5 +35,5 @@
|
||||
"publishConfig": {
|
||||
"registry": "https://registry.npmjs.org/"
|
||||
},
|
||||
"version": "1.1.12"
|
||||
"version": "1.2.0"
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
var markoWidgets = require('../');
|
||||
var WidgetContext = markoWidgets.WidgetsContext;
|
||||
|
||||
module.exports = function render(input, out) {
|
||||
var widgetsContext = markoWidgets.getWidgetsContext(out);
|
||||
@ -6,10 +7,19 @@ module.exports = function render(input, out) {
|
||||
var options = input.immediate ? {immediate: true} : null;
|
||||
|
||||
if (input.immediate === true) {
|
||||
out.on('asyncFragmentFinish', function(eventArgs) {
|
||||
out.global.events.on('asyncFragmentBeforeRender', function(eventArgs) {
|
||||
if (eventArgs.clientReorder) {
|
||||
var asyncFragmentOut = eventArgs.out;
|
||||
asyncFragmentOut.widgets = new WidgetContext(asyncFragmentOut);
|
||||
}
|
||||
});
|
||||
|
||||
out.global.events.on('asyncFragmentFinish', function(eventArgs) {
|
||||
var asyncFragmentOut = eventArgs.out;
|
||||
var widgetsContext = markoWidgets.getWidgetsContext(asyncFragmentOut);
|
||||
markoWidgets.writeInitWidgetsCode(widgetsContext, asyncFragmentOut, options);
|
||||
var widgetsContext = asyncFragmentOut.widgets;
|
||||
if (widgetsContext) {
|
||||
markoWidgets.writeInitWidgetsCode(widgetsContext, asyncFragmentOut, options);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user