Смотреть функцию и все ее переменные, чтобы использовать ее в ngIf

Я хочу применить ngIf директива для элемента DOM, это ngIf смотреть функцию, и эта функция проверяет значения других переменных. В дальнейшем:

    export class Controller{

    private x: ObjectClass;

        public isDone():boolean{
         return this.x.isY() && this.otherFunction();
        }

        private otherFunction():boolean{
        let result:boolean = true;
        this.array.forEach((value)=>{
        if(!value){
        result = false;}
        });
        return result
        }
    }

//define the state 

  .state('app.first-state', {
        url: '/first-state,
        views: {
          'renderView': {
            template: require('./states/first-state.html'),
            controller: 'Controller as Ctrl',
          }
        }
      })

//in the first-state.html

    <div ng-if="Ctrl.isDone()"></div>

x это объект, который несет методы и переменные.

x.isY() а также this.otherFunction() изменить его возвращаемые значения на true но ngIf не воссоздает элемент DOM. Кажется, что цикл дайджеста не смотрит x не возражать ни array объект. Это имеет смысл, поскольку я не использую их непосредственно в элементах DOM. Однако метод isDone() работает только когда я вхожу в состояние или я выхожу из состояния.

Я сделал следующий обходной путь, но я обеспокоен тем, что будет проблема производительности:

    private isDoneVar:boolean = false;

    //then make my "own digest cycle"
     $interval(() => {
                this.isDoneVar = this.isDone();
            }, 700);
//and in the div
        <div ng-if="Ctrl.isDoneVar"></div>

У меня есть два квестоина:

  1. Почему isDone функция запускается, когда я вхожу и покидаю штат?
  2. Есть ли лучший способ сообщить angular запускать эту функцию при каждом цикле дайджеста? Или смотреть любые изменения для его внутренних переменных (без добавления $watch к каждой переменной)

0 ответов

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