Угловой компонент без URL

Я довольно плохо знаком с AngularJS (v 1.6), так что это может быть глупый вопрос.

Я пытаюсь создать компонент, который будет использоваться на главной странице моего приложения. Никакие данные не будут переданы ему, и вместо этого я сделаю вызов API.

Вот как это выглядит до сих пор:

class MyInboxController {
    constructor(api) {
        this.api = api;
        this.$onInit = () => {
          this.count = this.api.getAllMessages().then(function(data) { data.length });
        }
    }
}

MyInboxController.$inject = ['api'];

export const myInboxComponent = {
    template: require('./my-inbox.html'),
    controller: MyInboxController
};

По сути, этот компонент будет жить на главной странице моего приложения в навигации. Моя проблема в том, что когда я вызываю API-сервис, который есть в oninit, мне кажется, что данные не возвращаются вовремя для загрузки страницы. Любой совет будет фантастическим.

1 ответ

Решение

Код, вероятно, должен быть:

class MyInboxController {
    constructor(api) {
        this.api = api;
        this.$onInit = () => {
          api.getAllMessages().then( (data) => {
            this.count = data.length 
          });
        };
    }
}

.then метод возвращает обещание. Значение из обещания необходимо извлечь с помощью функции, предоставленной .then метод.

Другие вопросы по тегам