javascript - AngularJS Defer.promise 未按预期工作

标签 javascript angularjs persistence promise deferred

我正在使用 AngularJSPersistenceJS 开发应用程序。

我在处理异步调用时遇到了麻烦

Controller :

cars.controller('CrashWidgetOneCtrl',function($scope, $location, $routeParams, CrashServices){  
    if($routeParams.crashId){
        $scope.data = {};
        console.log("CrashID: "+$routeParams.crashId);
        crashId = $routeParams.crashId; 
        alert(1);//Works

        CrashServices.getCrashDetails($scope, crashId).then(function(result){
            console.log(result);
            alert(2);//Never Fires
        });    
    alert(3);//Gets executed
    }else{
        console.log("N");
    }   

});

服务:

cars.factory('CrashServices', function($http, $location, $q, CommonServices,$rootScope, $timeout){
    return{
        getCrashDetails:function($scope, crashId){
        var deferred = $q.defer();          
        // Get user details if any
        $scope.$apply(function(){
            var crashInfoTable = App.CrashInfoTable.all();
            alert(4);
            crashInfoTable.list(null, function (results) { 
                alert(5);//This also doesn't work
                deferred.resolve();
            }); 
        });
        return deferred.promise;
        }
    }

});

任何帮助将不胜感激。非常感谢。

注意:我正在使用 PersistenceJS。

最佳答案

我不知道你是否需要scope.apply。 这似乎对我有用:

getCrashDetails:function($scope, crashId){
    var deferred = $q.defer();          
    // Get user details if any
    App.CrashInfoTable.all().list(null, function(results) { 
        deferred.resolve(results);
    });
    return deferred.promise;
}

关于javascript - AngularJS Defer.promise 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21986659/

相关文章:

javascript - 带有 SetTimeout 的简单 jQuery 付费墙

AngularJS : array of objects in CookiesStore

java - 具有未知对象结构的标准根元素的遍历路径

java - 如何在 Activity 重新启动时保留 Intent 对象的值?

java - 当我不希望 Spring Data JPA 更新实体时

javascript - 数据库查询中的异步

javascript - 如何让 Dojo 复选框运行命令?

ios - Ionic Cordova 设备 UUID

javascript - 检测使用 javascript 单击哪个链接将用户带到特定页面

angularjs - 使用 .getJSON() 填充 $scope