Http状态代码工厂AngularJs

use*_*107 1 javascript json angularjs

我是使用AngularJs的新手,我使用$ http get创建了一个简单的工厂,它获得了一个.json,它有一堆或http状态代码作为键,以及它们各自的消息作为值.由于某种原因,我想得到这个错误:

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

JSON:

{
    "200": "Ok",
    "201": "Created",
    "202": "Accepted",
    "404": "Not_Found",
    "400": "Bad Request",
    "403": "Forbidden",
    "417": "Expectation Failed"
}
Run Code Online (Sandbox Code Playgroud)

factory.js

  .factory('statusCodesFactory', function () {

                var httpStatusCodes = {
                    getStatus: function ($http) {
                        $http.get('catalog/statusCodes.json')
                            .then(function (response) {
                               httpStatusCodes.code = response;
                            });
                    }
                }
                return httpStatusCodes;
            })
Run Code Online (Sandbox Code Playgroud)

MBi*_*ski 5

您需要正确传递'$ http'的依赖项.

.factory('statusCodesFactory', ['$http', function ($http) {
    var httpStatusCodes = {
        getStatus: function () {
            $http.get('catalog/statusCodes.json')
                .then(function (response) {
                    httpStatusCodes.code = response;
                });
            }
        }
        return httpStatusCodes;
    });
Run Code Online (Sandbox Code Playgroud)

话虽这么说,你的功能并没有真正归还任何东西.更好的格式是:

.factory('statusCodesFactory', ['$http', function ($http) {
    var httpStatusCodes = {
        getStatus: function () {
            return $http.get('catalog/statusCodes.json')
                .then(function (response) {
                    return response;
                });
            }
        }
        return httpStatusCodes;
    });
Run Code Online (Sandbox Code Playgroud)

这样称呼:

var statusCodes = {};
statusCodesFactory.getStatus().then(function(response){
    statusCodes = response;
});
Run Code Online (Sandbox Code Playgroud)