Backbone puppet -在模式对话框之间转换

6rqinv9w  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(130)

我有一个Marionette.CompositeView,它在单击时显示一个模态对话框。

events: {
  'click #my-new-view' : 'viewMyNewView'
}
...
viewMyNewView: function() {
  var newView = new MyNewView();
  App.modal.show(newView);
}

单击时,该视图以同样的方式依次显示另一个模式对话框。

(_.extend(Marionette.Region.prototype, Backbone.Events, {...})

appl.modal功能是backbone.marionette.js的一部分,show方法中的某个地方出错了。很难准确指出哪里出错了,因为当我单步调试时,show方法中的最后一行有一个断点(设置this.currentView = view;)则第二模态显示正常,继续后也不消失,如果没有断点,第二模态每次都会消失,可能是定时问题。
当我点击到第二个对话框,我看到它的一瞬间格式正确,然后它消失了;看起来像是有什么东西在它渲染后不久就杀死了它,我在我的单页应用程序上留下了一个黑色的覆盖层,模态应该在那里。
我尝试在两个单击处理程序中添加对e.stopPropagation()和e.preventDefault()的调用,但它们不能解决问题。
第一个模态是一个项目列表,第二个模态是其中一个项目的详细视图,因此必须首先呈现列表,然后将弹出第二个模态的单击事件处理程序附加到表行。
第一个模态是Marionette. Layout上的区域Marionette.CompositeView的一部分。

xe55xuns

xe55xuns1#

听 起来 像 是 当 你 点击 进入 第 二 个 对话 框 时 , 第 一 个 对话 框 关闭 了 。 如果 是 这样 , 关闭 第 一 个 对话 框 的 代码 可能 同时 关闭 了 两 个 对话 框 。 你 可以 在 close 函数 中 添加 一 个 可选 参数 来 验证 要 关闭 的 元素 的 ID 。
另 一 个 解决 方案 是 , 你 可以 只 切换 到 一 个 模态 。 将 项目 细节 视图 作为 JSON 和 模板 与 列表 视图 一起 交付 。 然后 点击 , 而 不是 调用 一 个 新 的 模态 , 只是 在 现有 的 模态 中 呈现 和 显示 。

bnlyeluc

bnlyeluc2#

这听起来像你正在使用Twitter的Bootstrap模态插件?我遇到了什么听起来像是同样的问题与它的工作。
问题本质上是如果调用.modal('hide'),然后是.modal('show')在快速的连续转换中,它会变得混乱--我相信这是因为它使用的CSS转换还没有完成,并且在它还在转换的时候调用了show get。我的解决方案稍微复杂一些,但是解决这个问题的一个简单方法是在触发show之前监听'hidden.bs.modal'事件。根据文件:
“当模态已完成对用户隐藏时(将等待CSS过渡完成),将激发此事件。

相关问题