当前位置: 首页 > 知识库问答 >
问题:

以最优雅的方式显示弹出窗口

杜阳炎
2023-03-14

我有这个角度JS应用程序。一切都很好。

现在,我需要在特定条件成立时显示不同的弹出窗口,我想知道最好的方法是什么。

目前我正在评估两个选项,但我绝对愿意接受其他选项。

我可以为弹出窗口创建新的超文本标记语言元素,并直接从控制器附加到DOM。

这将打破 MVC 设计模式。我对这个解决方案不满意。

我总是可以在静态超文本标记语言文件中插入所有弹出窗口的代码。然后,使用ngShow,我可以只隐藏/显示正确的弹出窗口。

此选项实际上并不具有可伸缩性。

所以我非常肯定,必须有更好的方法来实现我想要的。

共有3个答案

轩辕远
2023-03-14
  • 创建一个“popup”指令并将其应用于弹出窗口内容的容器
  • 在指令中,将内容与其下方的掩码 div 一起包装在绝对位置 div 中。
  • 可以根据需要从指令中移动 DOM 树中的 2 个 div。任何 UI 代码在指令中都是可以的,包括将弹出窗口放置在屏幕中心的代码。
  • 创建布尔标志并将其绑定到控制器。此标志将控制可见性。
  • 创建绑定到 OK /取消函数等的作用域变量。

编辑以添加高级示例(非功能性)

<div id='popup1-content' popup='showPopup1'>
  ....
  ....
</div>


<div id='popup2-content' popup='showPopup2'>
  ....
  ....
</div>



.directive('popup', function() {
  var p = {
      link : function(scope, iElement, iAttrs){
           //code to wrap the div (iElement) with a abs pos div (parentDiv)
          // code to add a mask layer div behind 
          // if the parent is already there, then skip adding it again.
         //use jquery ui to make it dragable etc.
          scope.watch(showPopup, function(newVal, oldVal){
               if(newVal === true){
                   $(parentDiv).show();
                 } 
              else{
                 $(parentDiv).hide();
                }
          });
      }


   }
  return p;
});
苍意智
2023-03-14

这很有趣,因为我自己也在学习Angular,并且正在看YouTube他们频道的一些视频。演讲者在这个视频中提到了你的确切问题https://www.youtube.com/watch?v=ZhfUv0spHCY#t=1681大约28:30分钟。

归根结底是将特定的代码段放在服务中,而不是放在控制器中。

我的猜测是将新的弹出元素注入DOM并单独处理它们,而不是显示和隐藏相同的元素。这样,您可以拥有多个弹出窗口。

整个视频也非常有趣:-)

段干河
2023-03-14

根据我迄今为止使用AngularJS模态的经验,我认为最优雅的方法是一种专用服务,我们可以为其提供部分(超文本标记语言)模板以模态显示。

当我们考虑它的时候,模态是一种有角度的路线,但是只是显示在模态弹出菜单中。

AngularUI bootstrap项目(http://angular-ui.github.com/bootstrap/)有一个优秀的$modal服务(在0.6.0版之前称为$dialog),它是将部分内容显示为模态弹出窗口的服务的实现。

 类似资料:
  • 我有这个角度JS应用程序。一切都很好。 现在,我需要在特定条件成立时显示不同的弹出窗口,我想知道最好的方法是什么。 目前我正在评估两个选项,但我绝对愿意接受其他选项。 我可以为弹出窗口创建新的超文本标记语言元素,并直接从控制器附加到DOM。 这将打破 MVC 设计模式。我对这个解决方案不满意。 我总是可以在静态超文本标记语言文件中插入所有弹出窗口的代码。然后,使用,我可以只隐藏/显示正确的弹出窗口

  • 我想在JavaFX中创建特定的组件。在 onClick 事件后显示 poupup 的按钮。 情景: > < li> 我们单击按钮 弹出显示下面的按钮(如图片上所示)

  • 本文向大家介绍Android退出应用最优雅的方式(改进版),包括了Android退出应用最优雅的方式(改进版)的使用技巧和注意事项,需要的朋友参考一下 我们先来看看几种常见的退出方法(不优雅的方式) 一、容器式 建立一个全局容器,把所有的Activity存储起来,退出时循环遍历finish所有Activity 这种方法比较简单, 但是可以看到activityStack持有这Activity的强引用

  • 我有一个内置于Java的应用程序,当应用程序中按下某个按钮时,另一个jframe应该会弹出一条消息。我制作的ant文件将可运行的jar放入我的Eclipse项目中的一个文件夹中。当jar构建完成后,我在它诞生的文件夹中运行jar,它运行良好。我可以点击使弹出窗口显示的按钮,它确实显示了。 当我把罐子移出并说,放在桌面上时,问题就来了。然后运行jar启动应用程序,但是按下按钮什么也不做(没有弹出窗口

  • 我读了关于JDialogsJOptionPane消息,但我还是无法让它工作。我有一个扩展JFrame的GUI类。我想做的就是在我的程序开始时有一个弹出窗口,通知用户一些事情。在我的主界面中,我创建了以下gui: 在那之后,我要展示橱窗。我在main方法中尝试了以下内容: 我还尝试将弹出窗口添加到GUI类中,如下所示 无论如何,我将如何使此窗口显示?我尝试过的每一种方法都编译了,但什么也没发生。 然

  • 本文向大家介绍Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案,包括了Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案的使用技巧和注意事项,需要的朋友参考一下 最近一直在使用Bootstrap,遇到了很多问题,通过google也明白了很多,学习了很多。针对‘Bootstrap modal 多弹窗之叠加显示不出弹窗问题'说一下自己的解决办法。 当然还是官方