我有一个由嵌套 subview 组成的主干系统,我偶尔需要在其中执行以下操作。
- 从 DOM 中分 ionic View
- 从头开始重新渲染父 View (从模板)
- 在正确的位置重新附加 subview 地点
我通过调用类似 $(parent.el).html(...)
然后 $(parent.el).append(child.el)
我一直看到的这种技术是 child 的事件处理程序丢失了。所以我尝试了很多方法,但到目前为止都没有用。
- 首先使用
$.detach()
分离 child.el - 克隆 child.el 节点并重新附加克隆
- 重新连接后再次调用 child.delegateEvents()
唯一对我有用的是从头开始完全重建 subview 。有人有什么想法吗?重新连接现有节点会更有效率。
谢谢!
最佳答案
我刚刚遇到了类似的问题。这似乎对我有用:
this.undelegateEvents();
this.$el.hide();
this.$el.detach();
// do whatever here
this.$el.appendTo(containerElement);
this.delegateEvents();
this.$el.slideDown('fast');
我仍然不确定为什么事件监听器消失了,尽管当我查看 Chrome 开发者工具窗口时我可以确认它们确实消失了。这很奇怪,因为 Roatin Marth 有一个例子 ( http://jsfiddle.net/Xcrhb/1 ) 没有发生这个问题。
关于javascript - 如何在不取消绑定(bind)事件的情况下分离然后重新附加 Backbone.View?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8343438/