首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Om或Reagent (和Bootstrap)进行模式对话

如何使用Om或Reagent (和Bootstrap)进行模式对话
EN

Stack Overflow用户
提问于 2016-03-01 04:39:19
回答 3查看 1.7K关注 0票数 6

我想知道如何使用Om或Reagent实现模式对话框的显示和隐藏。因为我的UI是状态上的函数,所以显示/隐藏应该由处于此状态的属性触发。

但是像Bootstrap这样的框架需要调用一些JavaScript来显示/隐藏对话框。

对于这个问题有什么通用的解决方案吗?

EN

回答 3

Stack Overflow用户

发布于 2016-03-02 04:00:52

不要在Om或Reagent中使用javascript或jquery效果来显示/隐藏对话框。相反,使atom的值确定模式对话框是否应该显示为。下面是Reagent的一个例子:

代码语言:javascript
复制
[(fn [shown]
       (if shown
        [:div.jumbotron.modal-background 
          {:on-click #(reset! popup-shown false)} 
          [:div.alert.alert-info
            [:div "Hello!"]]]
        [:div]))
   @popup-shown]
票数 8
EN

Stack Overflow用户

发布于 2016-03-05 16:35:52

看看re-com。它无疑展示了一种方法。https://github.com/Day8/re-com

票数 4
EN

Stack Overflow用户

发布于 2020-10-27 03:00:47

特别是对于Bootstrap,JavaScript将"show“添加到模式的类中,并将style="display: block;"添加到模式中。通过将这些添加到模式中,我们可以强制它一直显示,然后我们可以使用条件渲染来隐藏它:

代码语言:javascript
复制
(defn my-modal []
    (let [show @(app-state/query :modal-showing)]
      (when show
          [:div.modal.show {:tabIndex -1
                            :style {:display "block"}}
            [:div.modal-dialog
              [:div.modal-content
                "etc"]]])))

你从哪里得到你的show boolean,以及它是如何更新的,这将是特定于应用程序的,但希望这足以演示这个想法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35709165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档