1

由于各种原因,我将不再赘述,我已成功地将 ITHit Ajax 文件浏览器包装在 Angular 控制器中,该控制器本身已加载并包装在 Angular-UI-Router UI-View 中。

所有的设置都是通过前面的服务调用来配置的(以支持带有多变 url 的云环境),我什至已经解决了我所有的 CORS(跨源请求)问题,我们已经连接了一个自定义的 Oath2 实现DAV 服务器。所有这些都成功地与 ITHit 文件浏览器一起工作,作为我们内容浏览实现的核心。

截至目前,当我导航某些区域时,Angular-ui-router 调整 Url,视图响应,包装 ITHit 的 Angular 控制器响应视图更改,并且(不重新加载视图)重新获取适当的 DAV url使用可用的 IT Hit 命令(例如 SetSelectedFolderAsync)

这是我的(希望是简单的)挑战:当我导航到某些区域时 - Angular-UI-router 只是重新加载包含新内容的 UI-View,但是当我返回时 - ITHit Ajax 文件浏览器不会重绘。

以下是我的挑战的一些指导方针(如果你提供我可以使用的东西,可以忽略):

  1. 我宁愿避免不得不“隐藏” ITHit 容器(因为它无关紧要,而且我不想在视图中的状态更改时管理使其保持最新状态。这些更改会影响 DAV 路径)。我也不想担心不必要的网络流量。我真的很想让 Angular-UI-Router 用浏览器所在的 ui-view 来做它的事情。
  2. 我想保留任何需要对 Angular 控制器进行调用的调用(它管理身份验证、路径解析和上下文设置配置——随着用户导航而变化)。
  3. ITHit 解决方案生成的所有内容(最重要的内容)都存储在单例('DavBrowserService')中 - 所以当我返回文件浏览器视图时,我存储了初始实例化的所有内容,包括:
    • ITHit 对象的一个​​实例
    • ITHit.Loader 的生成实例
    • 先前生成的 AjaxFileBrowser.Controller 对象 (ITHit.oNS.Controller) 的一个实例
    • 先前生成的 WebDavSession 对象 (ITHit.oNS.WebDavSession) 的实例

有了上述内容 - 我希望我可以简单地将这些实例重新连接到现在返回的 dom-node ('afb-content-div')。任何帮助深表感谢!

4

1 回答 1

0

更新:下面的“答案”虽然看起来很实用 - 确实不是。但是,我通过在用户导航离开时抓取 DOM 实例并将其存储在内存中,并在用户导航回相应区域后重新附加它来解决此问题。这样,所有的 ITHit Magic 仍然绑定到正确的 DOM 节点,我不必担心部分重新实例化的怪异。现在好像还挺稳的。


我想到了!!!看起来如果我通过调用重新实例化控制器:

   var controllerInstance = new ITHit.oNS.Controller( originalSettingsObj );

一切都神奇地重新布线!我已经对上面的代码进行了一些检测,以检测“afb-content-div”HTML DOM 节点是否有子节点。

在对代码进行大量挖掘之后,看起来这是作为 ITHitLoader.oninit 回调(来自 AjaxFileBrowserLoader 实例)的参数返回的参数对象。

感谢参与!

于 2015-06-16T16:34:33.647 回答