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

时间:2017-03-03 12:18:33

标签: javascript c# html asp.net-mvc

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

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

1 个答案:

答案 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
    };
})();