FIX: More safety for going back while stuff is uncloaking

This commit is contained in:
Robin Ward 2014-06-24 13:50:24 -04:00
parent 8e382fa5ea
commit 3521fb97e4
2 changed files with 10 additions and 2 deletions

View File

@ -607,7 +607,12 @@ Discourse.TopicController = Discourse.ObjectController.extend(Discourse.Selected
postStream.prependMore().then(function() { postStream.prependMore().then(function() {
Em.run.next(function () { Em.run.next(function () {
$elem = $('#post-cloak-' + post.get('post_number')); $elem = $('#post-cloak-' + post.get('post_number'));
$('html, body').scrollTop($elem.position().top + distToElement);
// Quickly going back might mean the element is destroyed
var position = $elem.position();
if (position && position.top) {
$('html, body').scrollTop(position.top + distToElement);
}
}); });
}); });
} }

View File

@ -186,7 +186,7 @@
Em.run.schedule('afterRender', this, function() { Em.run.schedule('afterRender', this, function() {
onscreenCloaks.forEach(function (v) { onscreenCloaks.forEach(function (v) {
if(v && v.uncloak && (v._state || v.state) === 'inDOM') { if(v && v.uncloak) {
v.uncloak(); v.uncloak();
} }
}); });
@ -298,6 +298,9 @@
@method uncloak @method uncloak
*/ */
uncloak: function() { uncloak: function() {
var state = this._state || this.state;
if (state !== 'inDOM' && state !== 'preRender') { return; }
if (!this._containedView) { if (!this._containedView) {
var model = this.get('content'), var model = this.get('content'),
controller = null, controller = null,