【问题标题】:About angularJS TypeError: Cannot read property 'get' of undefined关于 angularJS TypeError: Cannot read property 'get' of undefined
【发布时间】:2017-04-27 15:08:36
【问题描述】:
 angular
    .module('erpos')
    .service('GetBillNoService', ['$http', '$filter', '$cookies', function ($http, $filter, $cookies) {
        return {
            getData: function ($http, $filter, $cookies) {
                var vm = this;

                var billNo = "";
                var date=$filter('date')(new Date(),'yyyy-MM-dd');
                console.log(date);
                date = date.split("-");
                var curDate = date[0].substring(2, 4) + date[1].substring(0, 2);
                HttpService
                    .get('/Company/' + $cookies.get('department') + '/MaterialNo/GetMax')
                    .success(function (data) {
                        switch (data.code) {
                            case 1000:
                                vm.materialIn = data.materialIn;

                                if (vm.materialIn == null) {
                                    vm.billNo = curDate + "0001";
                                } else {
                                    var time = vm.materialIn.maxBillNo.substring(0, 4).toString();
                                    var maxmonth = time.substring(0, 4);
                                    console.log(maxmonth);
                                    if (maxmonth != curDate) {
                                        vm.billNo = curDate + "0001";
                                    }
                                    else {
                                        vm.billNo = (parseInt(vm.materialIn.maxBillNo) + 1).toString();
                                    }

                                }
                                break;
                        }
                    });
                billNo = vm.billNo;
                console.log(billNo);
                return billNo;
            }
        }

    }]);

我想通过这个服务得到一个billNo,然后将billNo传递给控制器​​,但是出现错误

'TypeError: 无法读取属性'get' of undefined'

我发现'get'中的错误是cookies的属性,但我已经注入了它,所以谁能告诉我出了什么问题?

【问题讨论】:

  • HttpService 未注入
  • 我想补充一点,您仍在使用.success()。我强烈建议切换到.then()。第一个符号已被弃用,并在 AngularJS 版本 1.6.0 中完全删除。

标签: angularjs service


【解决方案1】:

HttpService.get 更改为$http.get 将解决您的问题。

【讨论】:

  • 我正在尝试按照您的方式进行操作,但仍然报同样的错误。
  • @wqvincent 你怎么打电话给GetBillNoService .getData
  • vm.new_materialIn.billNo=GetBillNoService.getData();
  • @wqvincent 好的,根据您的称呼方式,您必须将getData: function ($http, $filter, $cookies){...} 更改为getData: function(){...} 并使用您注入的$http
  • 感谢您的回答,但现在出现另一个错误:我仍然无法获取帐单No,我控制台记录“GetBillNoService.getData()”;但它显示“未定义”跨度>
【解决方案2】:

您正在尝试在HttpService 上致电.get。你没有在你的控制器上inject这个服务,这就是为什么它是undefined

解决方案 1

$http.get代替HttpService.get,这是Angular提供的$http服务。

$http.get('/Company/' + $cookies.get('department') + '/MaterialNo/GetMax')

解决方案 2

在您的控制器中注入 HttpService 以使用您自己的。

.service('GetBillNoService', ['$http', '$filter', '$cookies', 'HttpService', 
                     function ($http,   $filter,   $cookies,   HttpService) {

【讨论】:

    猜你喜欢
    • 2021-06-25
    • 1970-01-01
    • 2017-04-24
    • 2023-03-15
    • 2021-09-18
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    相关资源
    最近更新 更多