mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
Make rendered callback sort of work
This commit is contained in:
@@ -67,7 +67,10 @@ Blaze.Component = Blaze.Controller.extend({
|
||||
return self.render();
|
||||
});
|
||||
range.onstop(function () {
|
||||
self.finalize();
|
||||
if (! self.isFinalized) {
|
||||
self.isFinalized = true;
|
||||
self.finalize();
|
||||
}
|
||||
});
|
||||
return range;
|
||||
},
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
// A constant empty array (frozen if the JS engine supports it).
|
||||
var _emptyArray = Object.freeze ? Object.freeze([]) : [];
|
||||
|
||||
@@ -286,19 +287,18 @@ _.extend(Blaze.DOMRange.prototype, {
|
||||
}
|
||||
});
|
||||
|
||||
Blaze.DOMAugmenter = function () {};
|
||||
Blaze.DOMAugmenter = JSClass.create();
|
||||
_.extend(Blaze.DOMAugmenter, {
|
||||
attach: function (range, element) {},
|
||||
// arguments are same as were passed to `attach`
|
||||
detach: function (range, element) {}
|
||||
});
|
||||
|
||||
Blaze.EventAugmenter = function (eventMap) {
|
||||
this.eventMap = eventMap;
|
||||
this.handles = [];
|
||||
};
|
||||
Blaze.EventAugmenter.prototype = new Blaze.DOMAugmenter;
|
||||
_.extend(Blaze.EventAugmenter.prototype, {
|
||||
Blaze.EventAugmenter = Blaze.DOMAugmenter.extend({
|
||||
constructor: function (eventMap) {
|
||||
this.eventMap = eventMap;
|
||||
this.handles = [];
|
||||
},
|
||||
attach: function (range, element) {
|
||||
var self = this;
|
||||
var eventMap = self.eventMap;
|
||||
|
||||
@@ -11,6 +11,28 @@ _.extend(UI.body2, {
|
||||
}
|
||||
});
|
||||
|
||||
if (Meteor.isClient) {
|
||||
UI.TemplateRenderedAugmenter = Blaze.DOMAugmenter.extend({
|
||||
constructor: function () {
|
||||
this.fired = false;
|
||||
},
|
||||
attach: function (range, element) {
|
||||
if (! this.fired) {
|
||||
this.fired = true; // only fire once
|
||||
var tmpl = range.controller;
|
||||
if (tmpl.rendered && ! tmpl.isFinalized) {
|
||||
Deps.afterFlush(function () {
|
||||
if (! tmpl.isFinalized) {
|
||||
var templateInstance = {}; // XXX
|
||||
tmpl.rendered.call(templateInstance);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
UI.TemplateComponent = Blaze.Component.extend({
|
||||
constructor: function (dataFunc, contentFunc, elseFunc) {
|
||||
UI.TemplateComponent.__super__.constructor.call(this);
|
||||
@@ -40,6 +62,9 @@ UI.TemplateComponent = Blaze.Component.extend({
|
||||
range.addDOMAugmenter(new Blaze.EventAugmenter(m));
|
||||
});
|
||||
}
|
||||
if (this.rendered) {
|
||||
range.addDOMAugmenter(new UI.TemplateRenderedAugmenter);
|
||||
}
|
||||
return range;
|
||||
},
|
||||
events: function (eventMap) {
|
||||
|
||||
Reference in New Issue
Block a user