如何检查是否加载了部分视图,然后加载javascript

时间:2015-05-25 09:08:36

标签: c# jquery ajax asp.net-mvc partial-views

我对某个问题有疑问。由于我的应用程序使用部分视图和这些部分视图由ajax调用加载,每个部分视图使用javascript并包含js文件,最终调用数据库来绑定该特定视图的数据。     现在,加载视图所花费的时间比预期的多,因为它加载了js文件,而js文件再次调用服务器来提取记录。我希望我的视图被加载,然后js文件使db调用绑定数据。类似下面的内容 -

如果(部分视图已加载)    加载js文件,它将进行ajax调用,db最终将绑定数据。

这至少会加载视图,用户将看到一些东西,而不是等待装载机的空白背景。     下面是我加载PartialView的脚本。

    function loadview(action, hassubmenu, _fromtab) {
    if (hassubmenu == 'true') {
        return false;
    }
    if (!_fromtab) {
        $('.process').show();
        $('.mainbody').html('');
    }
    // call ajax to load view
    $.ajax({
        url: urlheader + "Home/LoadView/",
        type: 'POST',
        data: {
            'view': action
        },
        success: function (data) {
            // This outputs the result of the ajax request                       
            $('.process').hide();
            if (!_fromtab) {
                $('.mainbody').html('').html(data);
                // disable appfilter from start screen
                var ostype = $('select#selection').find('option:selected').data('ostype');
                var did = $('select#selection').find('option:selected').val();
                if (ostype.toLowerCase() == 'ios' && action == 'Start') {
                    $('div.appfilter').hide();
                    $('#liAppFilter').hide();
                }
                getsyncinfo(did, false);
                if (_currenttab != undefined) {
                    reloadCurrentFilterTab(_currenttab);
                }
            }
            else
                $('.chicoAppsUrlsDetails').html('').html(data);
        },
        error: function (errorThrown) {
            console.log(errorThrown);
        }
    });
}

1 个答案:

答案 0 :(得分:1)

如果我理解正确,js事件不会在你的部分视图中触发html(那些是ajaxed)

这是因为加载到页面上的html是在js之后(它绑定了你的事件)。

您需要将局部视图中的doms上的任何事件放在 document 元素上,而不是使用jquery on方法来指定选择器。

例如

GET / HTTP/1.1
Host: 127.0.0.1:1026
Accept: text/html,...
User-Agent: Mozilla/5.0 ...
Accept-Encoding: gzip, deflate
Accept-Language: en-us
Connection: Keep-Alive

这样,您可以使用ajax向页面添加部分内容,部分中的doms仍会触发事件。