javascript - 是否可以控制 HTML Razor 组件的渲染顺序?
问题描述
我正在尝试渲染我的一个页面,并且我Html.RenderAction()
在要显示的 div 顶部有一个调用。我想document.ready()
从通过我的 RenderAction 调用显示的页面内部调用我的 js 初始化方法之一,但它似乎document.ready()
在调用后页面中的 html 之前触发Html.RenderAction()
。
因此,init 函数正在检查自在 JQuery 完成之前被调用以来尚未加载的 kendo 元素的数据,并且仅将应为 kendo 输入的输入视为默认 html<input>
元素。
换句话说,有没有办法延迟 RenderAction 的加载/调用,直到页面内部加载?或者我应该使用一些丑陋的 CSS 将我需要的部分保留在我的 div 的顶部?下面是我的代码的非常基本的摘要:
<html>
...
<div>
@Html.RenderAction("File that calls init() method")
<...rest of page that I need to load first, including kendo text boxes/>
</div>
</html>
调用 init() 方法的文件
<div>
...
</div>
<script src="...">
$(document).ready(function() {
myJs.init(params)
}
</script>
现在我已经在其他地方实现了下面的答案,我意识到当从document.ready
to切换时window.on('load',...)
,它现在破坏了另一个类似工作的视图,但@Html.RenderAction
调用位于底部:
...
<div>
<>page including kendo inputs</>
@Html.RenderAction("different file that calls same init() method")
</div>
</html>
基本上,document.ready
如果剃须刀在剑道之前,对我有用,但反之则不然——window.on('load',function(){...})
反之亦然。
更新:经过大量试验和错误寻找解决方案后,我最终不得不重新排列我的页面 - 似乎没有简单的方法可以解决剃须刀在 CSHTML 页面上加载的顺序
解决方案
这可能有效,尝试使用 $(window).load(function() 而不是 $(document).ready(function()
<div>
...
</div>
<script src="...">
$(window).load(function() {
myJs.init(params)
}
</script>
来自以下链接:“在完整页面完全加载时执行,包括所有框架、对象和图像”
推荐阅读
- amazon-s3 - 使用 jQuery 文件上传器直接上传到 Amazon S3 是否更可靠?
- ruby-on-rails - 用于 has_many 的 Rails 嵌套表单:通过使用简单表单的连接模型上的附加字段
- ruby-on-rails - Capistrano 将我的应用程序从 Sqlite3 更新到 Rails,Gem::LoadError
- c# - 如何在 Windows 文件资源管理器中的自定义预览面板和默认预览面板之间切换?
- python - 如何避免字典重排键?
- java - 如何使用 GSON.fromJson 与变量中提供的类型?
- tensorflow - 远程资源培训
- java - Runtime.exec 以非管理员身份运行
- html - 将类应用于 ngFor 中的特定元素
- vue.js - vue.js - 在运行时设置响应性