2013-10-19 86 views
0

我有下面的代码不触发:承诺使用监听器

app.factory('testservice', function ($rootScope, $q) { 
    var defer = $q.defer(); 
    defer.promise.then(
     function(){alert('Never fires. Resolve');}, 
     function(){alert('Never fires. Reject');} 
    ); 
    document.addEventListener('event', function() { 
     alert("Fires"); 
     $rootScope.$apply(defer.resolve); 
     alert("Fires");}, false); 
    }); 
} 

这是一个角度的网站。而且我正在玩变化。问题在于,当我解决听众的承诺时,诺言不会解雇,为什么?

顺便说一句,当然这里的承诺是没有意义的,但我只是在测试......而且我很确定我错过了一些东西。

回答

1

除非另有其他依赖它的工厂进行测试,否则只需使用模块运行功能即可。我已经修复了以前的代码中的几个语法错误,现在一切似乎都奏效了。

Plunker

的Javascript:

angular.module('plunker', []) 

.run(function ($rootScope, $q, $log) { 
    var defer = $q.defer(); 
    defer.promise.then(
     function(){$log.log('Resolved');}, 
     function(){$log.log('Rejected');} 
    ); 
    document.addEventListener('mouseenter', function() { 
     $log.log("mouse enter fired"); 
     $rootScope.$apply(defer.resolve); 
    }); 
});