我正在构成表单的视图中的选项卡上实现延迟加载功能。
但是,有时视图不会延迟加载,例如在ModelState
错误的情况下,我会调用Html.Action()
来检索视图。
为了做到这一点,我正在询问模型以查看相关属性是否为空:
@if (Model.CaseDetails != null)
{
@Html.Action("LoadCaseDetails", new { id = Model.CaseManagement.Id, model = Model.CaseDetails })
}
else
{
//Empty as later added in with ajax call
}
当我稍后ajax视图时这很好用但是如果视图加载到页面中,相关的javascript库还没有被加载,那么依赖库的javascript会失败。
除了在页面开头加载js库之外,如何解决此问题?
请注意,我不能轻松将javascript放在主视图中,因为它依赖于仅在呈现视图时加载的数据,并且添加到此我的实际需求更复杂比我放弃了(我们在其他延迟加载选项卡中的标签中加载延迟),所以这种方法并不真实。
答案 0 :(得分:1)
您必须推迟执行JavaScript。有很多方法可以做到这一点。但是,最好的办法是使用像RequireJS这样的JS模块加载库。您需要做一些初步的工作才能熟悉它的工作原理并设置您的配置,但是一旦您这样做,它将具有无限的可维护性和功能性。
最简单的方法,尽管可能不是最好的方法,但只需使用window.onload
:
(function () {
var onload = window.onload;
window.onload = function () {
onload();
// put your js code here that should only happen when everything is loaded
};
})();