angularjs工厂在firefox中显示无法访问的代码错误

时间:2015-08-07 11:49:45

标签: javascript angularjs

设置一个角度应用程序,它有一个工厂将数据发布到服务器



angular.module('new-ticket-app')
.factory('CreateTicketFactory', function($http, $rootScope){
    var CreateTicketFactory = {
        async: function($params) {
            return $http({
                headers: {'Content-Type': 'application/json','X-Auth-Token': $rootScope.access_token},
                url: $rootScope.resourceurl+'/server',
                method: "POST",
                data: $params,
            })
            .then(function (response) {
                // The return value gets picked up by the then in the controller.
                return response.data;
            });
            // Return the promise to the controller
            return promise;
        }
    };
    return CreateTicketFactory;
});




控制器代码是



CreateTicketFactory.async($params).then(
    function(d) {
        console.log(d);
    },
    function(d) {
        console.log(d);
    }
);




上面的代码在firefox中显示无法访问的代码错误,并且在第一次加载应用程序时无法正常工作。

2 个答案:

答案 0 :(得分:2)

您在一个功能中有三个returnreturn $http行始终会在return promise行之前返回,因此无法访问代码。如果您想要返回$ http调用本身返回的承诺,那么只需return $http({... parameters })而不是.then并且最后没有return promise

答案 1 :(得分:1)

  

$ http服务是一个带有单个参数的函数 - a   配置对象 - 用于生成HTTP请求和   返回承诺

换句话说,在一个已经返回的promise是无法访问的代码之后,你试图返回一个promise。

要么在你称之为的地方处理承诺,请在数据参数旁边提供一个将在承诺解决后立即执行的回调。