angularjs - mdbottomsheet 禁用向下拖动关闭

标签 angularjs material-design angular-material

我想禁用 mdbottomsheet 的向下拖动关闭手势。我找到了解决脚本问题的方法,但我不确定将代码放在哪里。感谢您的帮助。

最佳答案

正如您所说, Angular Material 没有提供任何禁用它的选项,显然您必须对其源代码进行更改。

现在,您还没有提到是否要在特定位置禁用它,还是要在所有地方对bottomSheets 进行向下拖动以关闭。

1) 对于后者,这将非常简单,因为您唯一需要做的就是删除拖动事件的事件监听器。 如果您使用 angular-material.js 文件,您可以执行以下操作:

找到函数BottomSheet(element,parent)。该函数基本上注册关闭工作表的拖动事件。我们需要让它不附加监听器。

将其减少为:

function BottomSheet(element, parent){
   return {
      element: element,
      cleanup: angular.noop
    };
}

清理函数基本上取消注册拖动事件的监听器。当 BottomSheet 的范围被销毁时,将调用此函数。为了进行最小的更改,我们只是将清理功能减少为不执行任何操作。

2) 如果您希望在 Controller 中创建工作表时能够传递选项,您可以执行相同的操作,但有条件地基于您传递的选项。不会编写代码,因为我假设您知道 Angular 的工作原理,但步骤如下:

=> 添加 bool 变量以及其他选项(模板、范围等)。我们称之为dragDownToClose

=> 在 MdbottomSheet 的提供程序函数内的默认注入(inject)器函数中,为其分配一个默认值 (true/false)。

=>在 onShow 函数内实例化 BottomSheet() 期间将其与元素和父级一起传递。

=> 因此 BottomSheet() 现在将具有三个参数 - DragDownToClose 是新的参数。

=> 正如我们在前一种情况中所做的那样,当值为 false 时返回不附加任何处理程序的元素,并在值为 true 时让原始函数为 true。

当然,您可以通过多种方式来实际实现这一点。不过,我希望你能明白。

关于angularjs - mdbottomsheet 禁用向下拖动关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41436724/

相关文章:

javascript - 根据循环中的选定项目过滤选择列表项目

Android:在 viewpager 中使用 recyclerview 滚动问题

angular - 将数据从动态 mat-cell 传递到点击功能

javascript - 处理两个或多个相同指令的点击离开

Javascript - 如何从数组列表中获取最后一条记录?

javascript - 使用 Angular js 删除 IE8 中的#params

java - android - 工具栏不显示在 Activity 中

javascript - 粘性标题 md-table-container Angular js Material 设计

Angular Material 2 无法抑制所需的星号

javascript - 尝试将 http 响应分配给数据源时出现 Angular 表错误