Material Design Lite-以编程方式打开和关闭吐司

Ron*_*ton 3 material-design-lite

我想打开和关闭MDL吐司,而不是使用MDL使用指南中指出的timeout属性。原因是我希望在进行地理位置定位时保持吐司状态,这有时需要10秒钟以上,而其他时间则需要1秒。

任何想法如何做到这一点?

mh-*_*bon 6

我找到一个问题解答,在sb对象上调用cleanup_方法。

使用此解决方案,我可以显示sb,单击动作处理程序将其隐藏,然后重新触发该动作以显示它而没有任何问题。

var snackbar = form.querySelector("[class*='snackbar']");
if (snackbar) {
  var data = {
    message: 'Wrong username or password',
    timeout: 20000,
    actionHandler: function(ev){
      // snackbar.classList.remove("mdl-snackbar--active")
      snackbar.MaterialSnackbar.cleanup_()
    },
    actionText: 'Ok'
  };
  snackbar.MaterialSnackbar.showSnackbar(data);
}
Run Code Online (Sandbox Code Playgroud)

由于cleanup_不是公共api的一部分,我认为值得用一些小检查将其括起来,以免造成灾难。

snackbar.MaterialSnackbar.cleanup_ 
&& snackbar.MaterialSnackbar.cleanup_()
!snackbar.MaterialSnackbar.cleanup_ 
&& snackbar.classList.remove("mdl-snackbar--active")
Run Code Online (Sandbox Code Playgroud)