我们有一个利用部分页面 AJAX 更新的 ASP MVC 应用程序。当我们屏幕的一个面板上发生用户驱动的操作时,我们需要确保我们的 jsTree(在单独的面板中)更新。
但是,尝试在成功范围内采取行动:AJAX 调用的一部分不起作用 - 这发生得太早了,并且 jsTree 还没有准备好接受这些命令。稍后执行相同的命令就可以了。
我们已经通过以下方式解决了这个问题: - 在 AJAX 成功后,将所需的回调方法存储在新的 Javascript 类中:
var EPCStateMembers =
{
_callbackMethod: "",
StoreCallback: function (callbackMethod)
{
EPCStateMembers._callbackMethod = callbackMethod;
},
UseCallback: function ()
{
if (EPCStateMembers._callbackMethod != "")
EPCStateMembers._callbackMethod();
EPCStateMembers._callbackMethod = "";
}
}
在 AJAX 成功后,我们调用 EPCStateMembers.StoreCallback()
然后,一旦 jsTree 准备就绪(由它自己的事件 reselect.jstree 指示)——我们调用
EPCStateMembers.UseCallback();
从功能上讲,此解决方案有效。
但是,在我们将自己交给临时 Javascript 状态存储作为我们的 goto 解决方案之前......我想问一个问题 - 这种情况是否存在更好的模式或实践?