无法读取属性' errorCallback'未定义的

时间:2014-07-25 09:48:15

标签: javascript angularjs

我正试图以一种允许我运行功能的方式使用Factory,但我似乎无法让它工作。

在我的控制器中,我想拨打httpErrorHandler.statusHandlerFunction.errorCallback()

这是我的工厂:

  .factory('httpErrorHandler', ["Restangular", "StorageService",
        function (Restangular, StorageService) {

            return statusHandlerFunction = function errorCallback() {
                return alert("Oops error from server :(");
            }

        }]);

我收到错误:

TypeError:无法读取未定义的属性errorCallback

我也尝试过:

.factory('httpErrorHandler', ["Restangular", "StorageService",
    function (Restangular, StorageService) {

        return function errorCallback() {

            return alert("Oops error from server :(");
        }


    }]);

但得到:undefined不是函数

更新

感谢您的回答。最终帮助了我:

.factory('httpErrorHandler', function (Restangular, StorageService) {
    return {

        errorCallback: function () {
            return  alert("Oops error from server :(");
        }
    };
})

2 个答案:

答案 0 :(得分:1)

你没有得到那么好的退货声明。试试这个:

.factory('httpErrorHandler', ["Restangular", "StorageService",
    function (Restangular, StorageService) {

       var exports = {}

       exports.errorCallback = function() {
                                  return alert("Oops error from server :(");
                              }
       return exports;


    }
]);

用它来代替:

httpErrorHandler.errorCallback();

这种方式更容易阅读,您可以继续向导出对象添加方法并在最后返回它。

答案 1 :(得分:1)

您的对象表示法有问题。试试这个:

.factory('httpErrorHandler', ["Restangular", "StorageService",
function (Restangular, StorageService) {

  var factory = {
    statusHandlerFunction: {
      errorCallback: function () {
        return alert("Oops error from server :(");
      }
    }
  }

  return factory;

}]);