在 Angularjs 中持久化 iframe

Posted

技术标签:

【中文标题】在 Angularjs 中持久化 iframe【英文标题】:Persisting an iframe in Angularjs 【发布时间】:2014-12-12 06:38:37 【问题描述】:

所以我最近一直在将一个旧项目转换为 Angularjs,但有一个更大的部分我现在无法转换,但仍需要在 Angular 中工作。

为了解决这个问题,我使用了 iframe。现在的问题是,当我切换到不同的页面时,视图和关联 iFrame 正在被破坏。这意味着当我切换回来时,它会重新加载 iFrame,并且会丢失用户的位置以及他们没有保存在表单上的任何数据。通常我通过将所有内容存储在服务中来解决此问题,但由于它是 iFrame,因此无法解决此问题。

是否可以在模板上下文之外创建 iFrame,这样当我切换回页面时,我可以调用 iFrame 进行显示,而不是重新加载它,然后我可以在需要时手动销毁它?

或者有没有更好的方法来做到这一点? 谢谢!

【问题讨论】:

当然,没有办法在 page 的上下文之外创建 iframe,但是如果通过向后移动,您当然可以在主 html 上的视图模板之外创建它第四,您正在使用路由来交换视图,而不是从服务器重新加载整个页面。如果不是这样,那么我将需要更多上下文,例如当用户切换页面时,如何防止数据在旧端发生变化? 您可以尝试将ngInclude 用于iFrame,而不是将其加载到ngView 【参考方案1】:

对于任何感兴趣的人,我最终将 iFrame 放在 ng-if 内的父模板中。当我转到我想要 iframe 的路线时,我将 ng-if 设置为 true,并在我选择不同的选项卡并希望它持续存在时将其保留为 true,当我希望它切换或不持续存在时,我设置了ng-if 返回 false 并且一切似乎都按预期工作。

【讨论】:

以上是关于在 Angularjs 中持久化 iframe的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS $cookies 没有持久化

PhoneGap 上 Angularjs/Javascript 应用程序的最佳数据持久性? [关闭]

高效的AngularJS状态管理和持久性

基于特征检测的AngularJS服务注入

使用 div 像 iframe 和 jquery

angularJS 服务-$provide里factoryservice方法