angular js ng-if не получает возвращаемое значение от асинхронной функции - PullRequest
0 голосов
/ 13 февраля 2019

Я оцениваю функцию в нг, чтобы узнать, есть ли у пользователя разрешение на выполнение действия.Проблема заключается в том, что функция для оценки выполняет вызов бэкэнда и, по-видимому, не работает правильно рядом с ng-if, поскольку она печатает пустой объект, а не результат, который возвращает функция.

IЯ показываю результат в html с этим, чтобы знать, на что реагирует функция:

{{organizationController.isAllowedToInvite ()}}

это напечатать мне пустой объект {}

это функция, которую явычисление:

self.isAllowedToInvite = () => {

      organizationRoleService.getUserPermissions(self.organizationId)
        .then((response) => {
          const userPermissions = response.data;

          if (userPermissions && userPermissions.organizationPermissions >= 4){
            return true;
          }
          return false;
        }, (error) => {
          console.log(error);
        });
    };

возвращает true или false, само по себе работает хорошо.

Почему я не могу показать результат функции при печати в html?потому что вместо того, чтобы показывать true / false, он показывает мне пустой объект {}?

я хочу, чтобы он показывал мне true или false, поэтому я могу оценить его в ng, если правильно.

этомое нг-если, очевидно, это не работает, потому что имеет значение {}.

ng-if="organizationController.isAllowedToInvite()"

1 Ответ

0 голосов
/ 13 февраля 2019

в вашем методе есть асинхронная операция, вы не можете статически проверить условие в if.Вы должны вызвать метод при создании экземпляра контроллера, а затем использовать флаг, который вы установили в true, если все условия выполнены, и проверить этот флаг в шаблоне

self.isAllowedToInvite = () => {
      self.isAllowed = false;
      organizationRoleService.getUserPermissions(self.organizationId)
        .then((response) => {
          const userPermissions = response.data;

          if (userPermissions && userPermissions.organizationPermissions >= 4){
            self.isAllowed = true;
          }
        }, (error) => {
          console.log(error);
        });
    };

self.isAllowedToInvite();

и в вашем шаблоне

ng-if="organizationController.isAllowed"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...