Track fragment versions to reestablish child fragments after a change.
Without this, if I edit, say, post-entry.html, then the actual rendered post items disappear, because the UI protocol isn't sufficient to allow replacement of a parent location with survival of a child. I am not sure if this is a "fix" or a "workaround": it's workaroundish in that in principle a child fragment could monitor its parent fragment and rebuild itself when it detects a change. I suspect revision to the UI protocols is indicated.
This commit is contained in:
parent
cddce5a02b
commit
66667d9fe6
|
@ -634,10 +634,10 @@
|
||||||
var c = this.ui.context(mainpageVersion, 'post', timestamp, pid);
|
var c = this.ui.context(mainpageVersion, 'post', timestamp, pid);
|
||||||
during inbound(uiTemplate("post-entry.html", $postEntryTemplate)) {
|
during inbound(uiTemplate("post-entry.html", $postEntryTemplate)) {
|
||||||
assert c.html('.posts', Mustache.render(postEntryTemplate, postInfo));
|
assert c.html('.posts', Mustache.render(postEntryTemplate, postInfo));
|
||||||
during c.fragmentVersion(_) {
|
during c.fragmentVersion($postEntryVersion) {
|
||||||
var itemCounter = 0;
|
var itemCounter = 0;
|
||||||
items.forEach((function (itemURL) {
|
items.forEach((function (itemURL) {
|
||||||
manifestPostItem(c.context('item', itemCounter++),
|
manifestPostItem(c.context('item', postEntryVersion, itemCounter++),
|
||||||
'#post-' + pid + ' .post-item-container',
|
'#post-' + pid + ' .post-item-container',
|
||||||
postInfo,
|
postInfo,
|
||||||
itemURL);
|
itemURL);
|
||||||
|
@ -777,12 +777,12 @@
|
||||||
if (entry && !this.entry) this.entry = entry;
|
if (entry && !this.entry) this.entry = entry;
|
||||||
}
|
}
|
||||||
assert uiContext.html(containerSelector, Mustache.render(postItemTemplate, itemInfo));
|
assert uiContext.html(containerSelector, Mustache.render(postItemTemplate, itemInfo));
|
||||||
on asserted uiContext.fragmentVersion(_) {
|
on asserted uiContext.fragmentVersion($postItemVersion) {
|
||||||
var innerContext = uiContext.context('item-body');
|
var innerContext = uiContext.context('item-body', postItemVersion);
|
||||||
assert innerContext.html('#' + itemId + ' .post-item-body-container',
|
assert innerContext.html('#' + itemId + ' .post-item-body-container',
|
||||||
Mustache.render(this.entry, itemInfo)) when (this.entry);
|
Mustache.render(this.entry, itemInfo)) when (this.entry);
|
||||||
if (!postInfo.isDraft) {
|
if (!postInfo.isDraft) {
|
||||||
on asserted innerContext.fragmentVersion(_) {
|
on asserted innerContext.fragmentVersion($innerContextVersion) {
|
||||||
if ((this.latestPostTimestamp === postInfo.timestamp) &&
|
if ((this.latestPostTimestamp === postInfo.timestamp) &&
|
||||||
(this.latestPostId === postInfo.postId)) {
|
(this.latestPostId === postInfo.postId)) {
|
||||||
setTimeout(function () { $("#post-" + postInfo.postId)[0].scrollIntoView(false); }, 1);
|
setTimeout(function () { $("#post-" + postInfo.postId)[0].scrollIntoView(false); }, 1);
|
||||||
|
|
Loading…
Reference in New Issue