2014-12-03 4 views
0

У меня есть угловая фабрика, которая создает глобальные предупреждения на экране, но устраняет ошибки предупреждений с помощью «ТипError: undefined не является функцией» Ошибка.Не определено «this» in Angular factory

Моя фабрика:

'use strict'; 
angular.module('meanstackStarterApp') 
    .factory('Alerts', function ($timeout) { 

    var alertType = null; 
    var alertTitle = null; 
    var alertMessage = null; 

    return { 
     setMessage: function(type, title, message, timed) { 
      console.log("in"); 
      this.alertType = type; 
      this.alertTitle = title; 
      this.alertMessage = message; 
      if (type == "alert-danger") 
      { 
       alertMessage = message + alertMessages.alertMessage_GlobalTryAgain; 
      } 
      if (timed) 
      { 
       // Set Timeout on unset 
       $timeout(this.unsetMessage(),5000); 
      } 
     }, 

     unsetMessage: function() { 
      console.log("out"); 
      this.alertType = null; 
      this.alertTitle = null; 
      this.alertMessage = null;   
     } 
    }; 
    }); 

setMessage функция работает отлично, но unsetMessage ошибки на this.

Если я удаляю префикс this из переменных, код проходит без ошибок, но фактически не устанавливает заводские переменные.

Что мне не хватает?

+0

this.unsetMessage (это) --- Почему вы передаете это здесь? –

+0

'this' в' unsetmessage' относится к 'unsetmessage' и' this' в 'setmessage' относится к' setmessage' –

+0

@PraveenPrasannan Это было предыдущей в гвоздике, когда я пытался ее решить ... теперь отредактирован. –

ответ

1

я здесь что-то вроде тебя, я меняю свой код, чтобы посмотреть, как у меня:

angular.module('meanstackStarterApp') 
    .factory('Alerts', function ($timeout) { 
    var self = this; 

    var alertType = null; 
    var alertTitle = null; 
    var alertMessage = null; 


    self.setMessage = function(type, title, message, timed) { 
      console.log("in"); 
      self.alertType = type; 
      self.alertTitle = title; 
      self.alertMessage = message; 
      if (type == "alert-danger") 
      { 
       alertMessage = message + alertMessages.alertMessage_GlobalTryAgain; 
      } 
      if (timed) 
      { 
       // Set Timeout on unset 
       $timeout(self.unsetMessage(this),5000); 
      } 
     }; 

    self.unsetMessage = function() { 
      console.log("out"); 
      self.alertType = null; 
      self.alertTitle = null; 
      self.alertMessage = null;   
     }; 

    return self; 
    }); 
Смежные вопросы