在我的 asp.net mvc4 + jquerymobile 应用程序中,我有一个看起来像这样的“页面”:
+---------------------------------------+
|A |
| +----------------+----------------+ |
| |B |C | |
| | | +------------+ | |
| | | |D | | |
| | | +------------+ | |
| +----------------+----------------+ |
+---------------------------------------+
- A 几乎只是一个容器页面,除了设置 B 和 C 的“子页面”(部分视图)之外,它什么也不做
- B 是一个 UserList 面板(div),它具有绑定的事件,这将导致面板 C 的 ajax 重新加载(部分视图)
- C 是一个 UserEdit 面板(div),包含一个带有其他信息的辅助面板。
- D 是一个 UserPermissions 面板(div),包含通过 ajax 调用与 simplemembership 角色系统交互的复选框。
所有四个视图我都有这个脚本的某个版本,告诉我哪些事件正在触发,什么时候:
$(document).ready(function () {
console && console.log("portalUser (pvUserEdit) document ready!!");
});
$(document).on('pageinit', function () {
console && console.log("portalUser (pvUserEdit) pageInit!!");
});
当页面 A 首次加载时,页面 B 会同时加载,并且 pageinit 事件和 DOM 就绪事件都会为它们触发。当从 B 中的列表中选择一个项目时,它会生成一个 ajax 加载来填充面板 C(这会导致面板 D 也加载)。这一次,只有 C&D 面板的 DOM 就绪事件触发,从不触发 pageinit 事件。
所以,这就是所有的背景信息。问题是:考虑到项目的 MVC4+JQM 方面,这是预期的行为吗?我应该期望 pageinit 在 partialView 加载时触发吗?还是我需要以不同于处理完整页面的方式处理部分视图?