Add DOMRange#destroy and UI.remove

This commit is contained in:
David Greenspan
2014-07-02 21:08:39 -07:00
parent 9237396478
commit babc38ced0
2 changed files with 17 additions and 1 deletions

View File

@@ -276,7 +276,7 @@ DOMRange.prototype._memberIn = function (m) {
m.$blaze_range = this;
};
DOMRange.prototype._memberOut = function (m, _skipNodes) {
DOMRange._destroy = function (m, _skipNodes) {
if (m instanceof DOMRange) {
if (m.view)
Blaze.destroyView(m.view, _skipNodes);
@@ -290,6 +290,8 @@ DOMRange.prototype._memberOut = function (m, _skipNodes) {
}
};
DOMRange.prototype._memberOut = DOMRange._destroy;
// Tear down, but don't remove, the members. Used when chunks
// of DOM are being torn down or replaced.
DOMRange.prototype.destroyMembers = function (_skipNodes) {
@@ -298,6 +300,10 @@ DOMRange.prototype.destroyMembers = function (_skipNodes) {
this._memberOut(members[i], _skipNodes);
};
DOMRange.prototype.destroy = function (_skipNodes) {
DOMRange._destroy(this, _skipNodes);
};
DOMRange.prototype.containsElement = function (elem) {
if (! this.attached)
throw new Error("Must be attached");

View File

@@ -248,4 +248,14 @@ UI.insert = function (range, parentElement, nextNode) {
range.attach(parentElement, nextNode);
};
// XXX test and document
UI.remove = function (range) {
if (! range instanceof Blaze.DOMRange)
throw new Error("Expected template rendered with UI.render");
if (range.attached)
range.detach();
range.destroy();
};
UI.body = Template.__body__;