app.controller('testCtrl', function ($rootScope, $scope, $mdToast)
{
$scope.showHideToast = function () {
$mdToast.show({
template: '<md-toast>test</md-toast>',
hideDelay: 0,
position: 'bottom right'
});
// DO STUFF
$mdToast.hide();
}
吐司出现但没有隐藏。 我得到这个类型错误:
TypeError: undefined is not a function
at Object.onRemove (../angular-material/angular-material.js:4240:13)
at Object.InterimElement.self.remove (../angular-material/angular-material.js:5103:29)
at Object.hide (../angular-material/angular-material.js:5032:40)
...
为什么这不适用于Angular Material? 有什么方法可以做到这一点吗?
答案 0 :(得分:7)
真正的问题是你如何使用hide
方法,它可以选择在输入中接收要解决的承诺。
所以你的代码应该是:
app.controller('testCtrl', function ($rootScope, $scope, $mdToast)
{
$scope.showHideToast = function () {
// hold the reference
var myToast = $mdToast.show({
template : '<md-toast>test</md-toast>',
hideDelay : 0,
position : 'bottom right'
});
// DO STUFF
// hide the toast
$mdToast.hide(myToast);
};
}
以这种方式调用hide
方法将关闭先前定义的toast,即使它是使用hideDelay: 0
定义的。
答案 1 :(得分:3)
我不知道为什么上面的答案被低估了。如果你将hideDelay设置为0,它就不会像我经历的那样隐藏吐司。我也有这个问题,但我自己的情况是在最后一个属性的值之后的逗号,恰好是hideDelay属性。
我建议您设置一个高于零的值并且这样做,我认为您不需要再次致电$mdToast.hide()
。
这样做对我来说很好:
$mdToast.show({
template: '<md-toast class="md-warn">Test</md-toast>',
hideDelay: 2000
});
显示toast消息并在2秒后隐藏它
编辑:
另外,考虑检查你的hammerjs版本2.0.0之上的任何版本应该是好的IMO
答案 2 :(得分:0)
您已将hideDelay设置为0.我建议将其设置为6000. 0表示永不隐藏。