javascript - 一个页面上的多个页面

标签 javascript jquery ajax backbone.js

我正在使用 backbone.js 并构建一个单页应用程序,灵感来自 trello.com ..

我想知道您如何在原始页面之上显示多个页面。至于你如何构建它。

您如何使用主干路由器来实现这一目标?

例如在 trello 中

主页 Basepage

然后现在在基础页面的顶部有动态内容

就像卡片的细节 A cards details

像板子的细节 boards details

我如何构建这样的东西?

最佳答案

到目前为止,我已经在 50 多页的项目中采用了几种方法,而且它们的扩展性都很好。我没有使用 backbone.js,但方法很简单,不需要框架来学习,除了我使用 jQuery 作为选择器。

它们的共同点是创建一个覆盖窗口,您可以将内容拉入该窗口。我是从头开始编写我的,但您可以轻松使用 jQuery UI 对话框。这两种方法仅在如何提取内容方面有所不同。此外,使用链接上的信息是您需要将“模块”或覆盖内容作为规则拉入的全部内容。不需要加载大量脚本来启动您的应用程序。让模块为您引入行为。

选项 1) 使用 jQuery 加载方法通过使用占位符变量从独立网页中提取内容,如下所示:

var $ph = $('<div />'); 
$ph.load(URL); // loads gui of remote URL + executes any script that URL has

$ph var 现在包含从外部 URL 加载的所有 GUI,因此您可以在其上使用选择器来提取特定的 HTML 并将其放入您的 DOM 或根据需要覆盖。

这是独立 HTML 输出的示例:

<div class="module">
    <a class="link">click me</a>
</div>
<script>
(function(){
    // put any private vars here
    $('.module .link').click(function(){
        // do something
    });
})();
</script>

如果您通过 jQuery 删除()或销毁覆盖层内的 dom,它将自动删除所有直接分配的事件,也就是“绑定(bind)”和“解除绑定(bind)”,但是使用“实时”或“委托(delegate)”您需要担心关于“die”和“undelegate”等。只需执行 die('.namespace').live('click.namespace') 即可确保已清除。

这是我的一个网站上的一个示例 -> http://www.kitgui.com/docs 但更好的例子是在客户部分,因为文档使用哈希历史非常简单。

2) 在叠加层中使用 iframe 并为其分配一个 URL。

这是最简单的选项,但速度稍慢,因为调用的每个页面都必须具有完全独立的行为和与 iframe 的依赖关系。此外,除非您有固定的覆盖窗口,否则您必须担心框架的大小等问题。

您必须有一个加载器在加载时覆盖您的 iframe,然后让 iframe 与父级对话以告知它已完成加载并隐藏加载器。

我为几个网站做了这个,但其中一个网站正在开发中,您可以在此处查看以获取代码 ->

http://dev.zipstory.com (登录并转到我的 zipstory 并单击“组”设置等以查看此内容,只需查看源代码即可了解我是如何做到的)

关于 iframe 的事情是你应该在父级上编写一些代码,这些代码接受来自 iframe 的标准消息,你同意作为一组典型的行为,例如通知其完成加载或传递消息以更新父级上的某些内容等。只要您的目标是 KISS 方法,就可以根据需要即时添加和重构。

关于javascript - 一个页面上的多个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8499689/

相关文章:

javascript - 返回 Ajax 数据后未应用 CSS/Javascript 动态样式

javascript - 通过 JavaScript 发送 Facebook 聊天消息

javascript - 显示隐藏 <div> 并同时滚动的按钮

javascript - jQuery:根据元素可见性显示/隐藏警报

jquery - 序列化函数悬停在动画 fiddle Jquery 上

javascript - 手动自动生成href

javascript - 如何在未完成的情况下从 ajax 触发的 PHP 调用获取更新?

javascript - 在点击刷新之前,我的 AJAX 调用将无法在下一页上运行

javascript - 暴露 mongodb 的 id 和安全性

javascript - 在 Node/MongoDb 中创建架构