如何在路由更改时阻止AngularJs在dom上拥有旧视图和新视图

Eri*_*c G 6 angularjs

我正在使用一个指令"可滑动",它创建一个滑出区域并具有切换功能.这段代码不是我写的,但它对我来说是一个更大的问题.当我更改视图(最常见的是/ user /:id类型)时,slideable是模板上使用的指令.该指令在其链接函数期间搜索元素并绑定click事件.问题是当我正在更改路由并且正在加载新视图(相同类型但不同的id)时,该指令将重新绑定到旧视图.如果我在链接期间停止使用chrome浏览器,那么我将在dom上看到两个ng-views,问题是它与正在离开的那个绑定.

我还有其他与此现象有关的问题.在制定新视图时,旧视图仍然在dom上是否正常?为什么在渲染新视图之前不会销毁旧视图?如何在这样的指令中解决这个问题?

谢谢.

我希望从概念上理解发生了什么.我已经修改了指令以选择最新的视图并适当地搜索并绑定到正确的元素.但我有点困惑的是,为什么会有一个在dom上共存的状态.

Hac*_*ese 1

旧的 HTML 片段与新的 HTML 片段一起短暂出现的一个明确原因是支持从旧的到新的过渡动画。查看文档ngView您将看到一个动画过渡的示例,很明显这不是错误或设计缺陷。

通常,当有人在绑定到正确的元素或元素的事件时遇到问题时,这是因为他们在选择元素时没有将选择器的范围限制为要添加或更新的 HTML 片段,或者尝试将 DOM 的部分定位到指令之外。因此,这是第一个要检查的地方,该指令是否正确执行操作,但就像我说的,我们需要代码来检查这一点。