【问题标题】:"data-url" jQuery Mobile confusing“data-url” jQuery Mobile 令人困惑
【发布时间】:2012-01-13 14:02:12
【问题描述】:
任何人都可以对 jQuery Mobile 中的“data-url”属性有更多的了解吗?目前我阅读了documentation,我发现它太令人困惑了,是否有工作演示或其他东西。
请避免复制粘贴来自 jQuery 移动网站的内容,它绝对有帮助
有人像我一样在同样的困惑中寻找同样的东西。
【问题讨论】:
标签:
jquery
mobile
jquery-mobile
data-url
【解决方案1】:
您正在查看文档的一个相当旧的链接。最新版本的文档包含有关 data-url 属性用途的更多信息。您可以在以下链接的相关页面上查看新的 1.0 版本:http://jquerymobile.com/demos/1.0/docs/pages/page-navmodel.html
我真的相信文档,尤其是 1.0 文档,会更好地解释这一点,但无论如何我会尝试:为了真正理解 data-url 属性,你需要了解结合所有的 jQuery Mobile 模型将您的 HTML 页面转换为移动网站的单个 HTML 文档。这些页面通常会延迟加载到同一个文档中。当您导航到页面上加载了 jQuery Mobile 的 HTML 文档时,HTML 将被解析,并且只会显示一个“页面”。
data-url 是您放置在 jQM 页面上以启用 Ajax 导航的属性。当您单击链接时,jQM 导航将首先在页面上查找匹配的 data-url 属性。例如,如果您浏览到 URL 为“example-host/some/path#/features/123”的启用 jQM 的页面,jQuery Mobile 将首先在当前文档中查找具有属性 @987654324 的 jQM 页面@。如果找到它,则隐藏当前 jQM 页面并显示它找到的页面。如果没有找到,它会尝试向 URL“example-host/features/123”发出 Ajax 请求,如果找到有效页面,则将内容作为另一个 jQM 页面加载。
这些 jQM 文档链接应该提供进一步的帮助:
Anatomy of a Page
jQM Page Model
【解决方案2】:
data-url 还有一个非常重要的用例——在重定向期间:
假设用户导航到/store/youraccount,但他们没有登录。
您的服务器可能会将它们重定向到登录页面/store/login。这会以 301 重定向的形式返回浏览器,即使 jQuery Mobile 不知道更改也不会加载该重定向。该页面将正确显示,但顶部的 URL 仍为 store/youraccount。
通过像这样在登录页面上设置data-url,jQuery mobile 可以在重定向后正确更新URL,这意味着它可以被加入书签并且<form> 标签在没有action 的情况下也可以工作。
data-url 如何阻止 <form> 中断:
如果您的页面包含一个未定义 action 属性的 <form> 标签,则默认行为是回发到当前页面 - 是的,您猜对了,浏览器仍然认为我们在 /store/youraccount
所以当您输入data-url='/store/login 时,它可以正确更新网址。
<div data-role="page" data-url="/store/login"
class="ui-page ui-body-c ui-page-active" id="page_">
注意:即使您的表单有action,您仍然需要设置 data-url。这只是一个示例,展示了关闭 data-url 会如何破坏事情。