2014-11-14 1 views
2
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:Как скрыть угловой материал mdToast?

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) 
... 

Почему это не работает в угловом материале? Любой способ сделать эту работу?

ответ

0

Вы установили hideDelay равным 0. Я рекомендую установить его на 6000. 0 означает, что он не скрывает.

2

Я не знаю, почему ответ выше был проголосован. Если вы установите значение hideDelay равным 0, он не скроет тост, как я его испытал. У меня тоже была эта проблема, но мой собственный случай был запятой после значения последнего свойства, которое является свойством hideDelay.

Я предлагаю вам установить значение выше нуля и сделать это, я не думаю, что вам нужно будет снова позвонить $mdToast.hide().

Делать это просто отлично работает для меня:

$mdToast.show({ 
    template: '<md-toast class="md-warn">Test</md-toast>', 
    hideDelay: 2000 
}); 

Он показывает сообщение тостов и скрывает это после того, как 2seconds

EDIT:

Кроме того, рассмотреть возможность проверить версию вашей hammerjs любой версии выше 2.0.0 должен быть штраф IMO

4

Настоящая проблема заключается в том, как вы используете метод hide, он может произвольно получить ive во вводе обещание, которое нужно решить.

Так что ваш код для того, чтобы работа должна быть:

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 таким образом закрывает ранее определенный тост, даже если она была определена с hideDelay: 0.