[英]How to load Blazor component in MVC partial view from javascript
[英]how to check if partial view is loaded and then load javascript
我有关于一个问题的查询。 当我的应用程序使用部分视图时,这些部分视图通过ajax调用以及每个部分视图的用法javascript和include js文件加载,该文件最终会调用数据库为该特定视图绑定数据。 现在,加载视图所花费的时间比预期要多,因为它加载了js文件,并且该js文件再次调用服务器以提取记录。 我希望先加载我的视图,然后再加载js文件,该文件使数据库调用绑定数据。 如下所示-
如果(partialview已加载)加载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);
}
});
}
如果我理解正确,部分事件中的html不会触发js事件(这些事件会被取消)
这是因为正在加载到页面上的html在js之后(绑定了您的事件)。
您需要将部分视图中dom上的所有事件放置在document元素上,而不是使用jquery on方法来指定选择器。
例如。
$(document).on('click', '.some-class', function(){
//do stuff
});
这样,您可以使用ajax向页面中添加局部对象,并且局部对象中的dom仍然会触发事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.