我在网络应用项目中使用版本1.3.4中的Parse JS
<script src="//www.parsecdn.com/js/parse-1.3.4.min.js"></script>
在我的一个观点中,我有这个声明:
var DrivesView = Parse.View.extend({
className :'backbone-container',
options: {},
events: {
"click i.map-view-open-button": "openMapViewInModal"
},
我想把一个事件放在一个字体很棒的元素中,它有一个类map-view-open-button
。 Parse
在某种程度上与Backbone
不同......
这非常有效:
<i>
元素 - &gt;我的函数app.driveView.openMapViewInModal
运行正常但是,如果我点击菜单并转到另一个视图,然后返回app.driveView
,那么该活动将无法正常工作。如果单击app.driveView.openMapViewInModal
元素,则不会调用函数<i>
。
奇怪的是,事件仍然存在于视图中。我用app.drivesView.events
检查了它。
当我离开时,我是否需要以某种方式关闭视图(如何?)然后再次渲染它以便重新创建事件?
这是我到目前为止所尝试的。我以为我可以删除渲染功能上的事件,然后再次创建它。问题是渲染函数只会被调用一次(第一次访问时)。如果我离开视图并返回,则不会调用渲染函数,这非常奇怪,因为我的路由器指向此函数(显式调用render
):
drivesViewer: function(){
$('#app').html(this.driveView.render().el);
},
任何想法?
感谢。
答案 0 :(得分:0)
我终于找到了解决方案。这真的很奇怪而且违背了我的期望,但我不是专家,所以我的期望并不是真的“有效”。
这就是我所做的。在查看器功能中,我删除了视图:
drivesViewer: function(){
this.drivesView.remove();
$('#app').html(this.driveView.render().el);
},
然后,在'DrivesView'声明中,我删除了'events'属性并将这些行放在'render'函数中:
this.undelegateEvents();
this.delegateEvents({"click i.map-view-open-button": "openMapViewInModal"})
现在,每次加载视图时,我都删除了视图,然后我取消了envents(不确定是否真的需要),然后设置新事件。有用。
注意:我认为Backbone和Parse之间存在差异,不知道为什么。任何评论和讨论都表示赞赏。