让我们假设在一个视图中我有一个DojoX Mobile ListItem,它通过AJAX将HTML视图片段拉入DOM,然后转换到该视图。假设这一切都正常。
现在,我回到其上有ListItem的初始视图,然后单击从DOM中销毁该视图节点的其他按钮。如果我现在单击先前将该视图节点加载到DOM(现在已被删除)的ListItem,它将尝试转换到不存在的视图。它不知道它已被删除。
是否有某种方式告诉ListItem它需要再次获取HTML,因为以前获取的内容不再存在?我在任何地方都没有看到任何关于这样做的事情。我认为这里不需要代码示例,但如果需要,我可以提供最小的代码示例。
答案 0 :(得分:0)
我走了一条不同的路线,让视图存在于DOM中,只是创建了一个清除视图中所有敏感数据的函数。
答案 1 :(得分:0)
好的,在这种情况下,我猜你可以挂钩ListItem容器(或任何其他onchange事件)的onShow函数。为所述句柄创建一个侦听器,以评估您的项目是否需要重新加载。以下是在item.onclick内容显示的假设 - 而不是包含这些信息的项目的标签
或者更好的是,在初始化期间执行所有这些操作,以便ListItem容器将使用自定义onClick代码进行扩展。
看似简单,但可能会引入一些怪癖,其中/当/如果您以编程方式更改为此项目,不过这里有:
function checkItem() {
// figure out if DOM is present and if it should be
if( isLoggedIn() ) {
this.getChildren().forEach(function(listitem) {
if( dojo.query("#ID_TO_LOOK_FOR", listitem.domNode).length == 0 ) {
// this references the listItem, refresh contents.
// Note: this expects the listitem to be stateful, have no testing environment at time being but it should be
listitem.set("url", listitem.url);
}
});
}
}
最好在您的ListItem
var listItemParent = new dojox.mobile.RoundRectList({
onShow : checkItem,
...
});
或创建听众
var listItemParent = dijit.byId('itemRegistryId');
// override onClick - calling inheritance chain once done
dojo.connect(listItemParent, "onClick", listItemParent, checkItem);