TypeError: Невозможно прочитать свойство 'push' из неопределенного [VueJs] - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь добавить объект в массив, но он не работает со мной, программа не может прочитать свойство push

Я определил массив в <script>:

Data: function() {
  return {
     Projects: [
        {
           name: '',
           id: 0,
           subscribers: 0,
           products: {name:'',color:''},
        }
     ],
}

И в функции:

GetAllWorkspaces: function(){

   var app = this;

  const instance = axios.create({
       timeout: 1000,
       headers: {
              ........
            }
          });
  instance.get("XXXXXXX")
  .then( function(response) {
  console.log(response);
  Object.keys(response.data.result).forEach( function (product) {

      var subscribersCounter = 0;

      let example = {
         name: response.data.result[product].name,
         id: response.data.result[product].id,
         subscribers: response.data.result[product].subscribers,
         products: response.data.result[product].products,
      };

      let uploadedExample = {
         name: '',
         id: '',
         subscribers: '',
         products: {name:'',color:''},
      };

      uploadedExample.name = example.name;
      uploadedExample.id = example.id;

      if ( example.subscribers ) {
      Object.keys(example.subscribers).forEach(function (key) {
          subscribersCounter++;
      });
      }

      uploadedExample.subscribers = subscribersCounter;

      if ( example.products ) {
         Object.keys(example.products).forEach(function (Pkeys) {
            uploadedExample.products.name = Pkeys;
            Object.keys(example.products[Pkeys]).forEach(function (key) {
                if (key == 'color') {
                        uploadedExample.products.color = example.products[Pkeys][key];
                }
             });
          });
        }

        //add the new workspace to the list of workspaces.
        app.Projects.push(uploadedExample);

    });

    })
    .catch(function(error) {
        console.log(error);
     });

Моя проблема с этой строкой

app.Projects.push (uploadedExample);

, когда при попытке вставить объект в массив отображается сообщение об ошибке:

TypeError: Невозможно прочитать свойство 'push' из неопределенного

1 Ответ

0 голосов
/ 27 августа 2018

Как говорит ошибка, проблема в том, что app.Projects не определен.Это происходит потому, что «this» относится к области действия функции внутри GetAllWorkspaces, а не к области действия компонента (вы можете попробовать это с помощью console.logging «this» - в любом случае - это хорошая практика при любых обстоятельствах, потому что «this» может меняться из контекстав контекст).Если вы хотите сохранить область действия компонента внутри метода, вы должны использовать функцию стрелки, подобную этой:

GetAllWorkspaces: () => {
// do all your stuff
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...