diff --git a/packages/spark/spark.js b/packages/spark/spark.js index 89eff3bab4..4b50b12207 100644 --- a/packages/spark/spark.js +++ b/packages/spark/spark.js @@ -427,53 +427,33 @@ Spark.isolate = function (htmlFunc) { if (!renderer) return htmlFunc(); - var ctx = new Meteor.deps.Context; + var ctx; var slain = false; - var html = - renderer.annotate( - ctx.run(htmlFunc), Spark._ANNOTATION_ISOLATE, - function (range) { - range.finalize = function () { - // Spark.finalize() was called on us (presumably because we - // were removed from the document.) Tear down our structures - // without doing any more updates. - slain = true; - ctx.invalidate(); - }; + return renderer.annotate('', Spark._ANNOTATION_ISOLATE, function (range) { + range.finalize = function () { + // Spark.finalize() was called on us (presumably because we + // were removed from the document.) Tear down our structures + // without doing any more updates. + slain = true; + ctx.invalidate(); + }; - ctx.on_invalidate(function () { - if (slain) - return; // killed by finalize. range has already been destroyed. + var refresh = function () { + if (slain) + return; // killed by finalize. range has already been destroyed. - // htmlFunc changed its mind about what it returns. Rerender it. - var frag = Spark.render(function () { - return Spark.isolate(htmlFunc); - }); - - var tempRange = new LiveRange(Spark._TAG, frag, null, - true /* inner */); - tempRange.operate(function (start, end) { - // Wrap contents of frag, *inside* the ISOLATE annotation, - // as appropriate for insertion into `range`. We want the - // wrapping inside the range so that if you have a