&引用;这";(对象)在使用$timeout调用angularjs函数时未定义
我有一个角度服务来管理我的屏幕警报:&引用;这";(对象)在使用$timeout调用angularjs函数时未定义,angularjs,service,this,Angularjs,Service,This,我有一个角度服务来管理我的屏幕警报: angular.module('theapp') .factory('Alerts', function ($timeout) { var unsetMsg = null; return { alertType: null, alertTitle: null, alertMessage: null, setMessage: function(type, title, message, timed) {
angular.module('theapp')
.factory('Alerts', function ($timeout) {
var unsetMsg = null;
return {
alertType: null,
alertTitle: null,
alertMessage: null,
setMessage: function(type, title, message, timed) {
var self = this;
$timeout.cancel(unsetMsg);
self.alertType = type;
self.alertTitle = title;
self.alertMessage = message;
if (timed)
{
unsetMsg = $timeout(self.unsetMessage,5000);
}
},
unsetMessage: function() {
this.alertType = null;
this.alertTitle = null;
this.alertMessage = null;
$timeout.cancel(unsetMsg);
}
}
});
设置消息工作正常(从角度控制器调用)并将超时变量设置为OK,但当在超时内调用的函数(未设置消息)在5秒延迟后运行时,代码抛出错误
这是未定义的。为什么它不承认自己是一个对象,我如何实现我要做的事情?一种可能是在回调中使用捕获的self
和它,以便传递正确的上下文:
if (timed) {
unsetMsg = $timeout(function() {
self.unsetMessage.apply(self);
}, 5000);
}