繁体   English   中英

获得所有实例化部件后,如何在Angular SPA中重新绘制ITHit Ajax文件浏览器?

[英]How can I redraw the ITHit Ajax File Browser in an Angular SPA when I've got all the instantiated parts?

出于各种原因,我将不进行讨论,已将ITHit Ajax File浏览器成功包装到Angular Controller中,该控制器本身已加载并包装在Angular-UI-Router UI-View中。

所有设置都是通过先前的服务调用进行配置的(以支持具有可变url的云环境),我什至解决了所有的CORS(跨源请求)问题,并且我们将自定义的Oath2实现与DAV服务器。 所有这些都可以与ITHit文件浏览器一起成功地作为内容浏览实现的核心。

到目前为止,当我导航某些区域时,Angular-ui-router会调整Url,视图会响应,而包裹ITHit的Angular Controller会响应视图更改,并且( 不重新加载视图 )重新获取适当的DAV URL具有可用的IT Hit命令(例如SetSelectedFolderAsync)

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

以下是我面临的挑战的一些指导原则(如果您提供我可以合作的内容,这是不可忽略的):

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

完成上述操作后-我希望可以将这些实例重新连接到现在返回的dom节点('afb-content-div')。 任何帮助深表感谢!

更新:下面的“答案”虽然看起来很有效-确实不是。 但是,我通过抓住DOM实例并在用户离开时存储它的内存来解决此问题,并在用户回到适当的区域后重新附加它。 这样,所有的ITHit Magic仍然绑定到正确的DOM节点,并且我不必担心部分重新实例化的怪异性。 现在看起来非常扎实。


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

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

一切都神奇地重新布线! 我在上面的代码中包装了一些检测“ afb-content-div” HTML DOM节点是否有子级的代码。

在深入研究代码之后,看起来这是作为ITHitLoader.oninit回调(来自AjaxFileBrowserLoader实例)的参数返回的参数对象。

感谢参与!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM