2013-10-19 83 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); 
    }); 
});