Javascript 库未加载用于加载页面的部分视图

Javascript libraries aren't loaded in to use for partial views of loaded in page

我在构成表单的视图中的选项卡上实现延迟加载功能。

但是有时视图不会延迟加载,例如在 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放在主视图中,因为它依赖于仅在呈现视图时加载的数据,并且除此之外,我的实际需求比我说的更复杂(我们在其他延迟加载选项卡中的选项卡中延迟加载)所以这种方法并不可行。

您必须推迟 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
    };
})();