【问题标题】:TypeError: Cannot read property '0' of undefined, in AngularJSTypeError:无法在 AngularJS 中读取未定义的属性“0”
【发布时间】:2020-05-21 04:14:19
【问题描述】:

我正在尝试在应用程序中创建票务系统,在创建此方法时,我遇到了与此功能相关的奇怪错误,并且在提到 VM.state[0]._id 的行中是准确的:

'use strict';
angular.module('app.modules.support')
    .controller('NewTicketController', [ 'ApiService', '$mdDialog', '$log', '$rootScope', '$mdToast',
        function (ApiService, $mdDialog, $log, $rootScope, $mdToast, states  /*, lodash */ ) {
            // PROPERTIES
            const VM = this;
            VM.gdpr = false;
            VM.public='public';
            VM.state = states,
            // METHODS

VM.createTicket = () => {
                const TICKET = {};
                const FIRST_MESSAGE = {};

                if (VM.form.$valid === true) {
                    FIRST_MESSAGE.body = VM.body.replace(/\n/g, '<br>');

                    TICKET.title = VM.title;
                    TICKET.space = VM.space;
                    /* eslint-disable camelcase */
                    VM.gdpr_phone!==''?TICKET.trace_rgpd = VM.gdpr_phone:TICKET.trace_rgpd='not';
                    TICKET.created_with = 'NeMa';
                    TICKET.viewed_by = [VM.userId];
                    TICKET.priority = 'low';
                    TICKET.id_lessor = 'AWBRcEpPV9YLqCHvv9nD'; //TODO: CHANGE THIS IN THE FUTURE
                    TICKET.events = [{
                        state_update : new Date().getTime(),
                        id_state     : VM.state[0]._id
                    }];
                    ApiService.Support.saveTicket(TICKET).then((result) => {
                        if (result.rows[0].items[0].index.created) {
                            VM.toast('Demande enregistrée');
                        }
                        FIRST_MESSAGE.id_ticket = result.rows[0].items[0].index._id;
                        ApiService.Support.saveMessage(FIRST_MESSAGE.id_ticket, FIRST_MESSAGE).then(() => {
                            $rootScope.$broadcast('/support/partialReload', FIRST_MESSAGE.id_ticket);
                            $mdDialog.hide();
                        });
                    });
                }
            }; 

有什么办法可以解决这个问题吗?

【问题讨论】:

  • 定义VM.state的代码在哪里?这个错误并不奇怪——实际上这是一个非常常见的错误。
  • VM.stateundefined - 正是错误所说的。
  • 函数属性中的VM.state=states
  • 1) 如果您编辑帖子并将新行放在那里,它会更容易阅读,并且 2) 仍然缺少一些信息。 VM.state = states 是在调用 VM.createTicket() 之前执行的吗?那么states 定义了吗?
  • 我编辑了类的代码,我试图将 id_state 更改为 |id_state: VM.state[VM.state.length - 1]._id] 但无法读取未定义的属性长度

标签: javascript angularjs api ticket-system


【解决方案1】:

这只是意味着在您尝试访问 VM.state[0]._id 时未定义“VM.state”;添加一个 console.log 语句来找出它为什么没有被定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 2016-09-12
    • 2016-11-20
    相关资源
    最近更新 更多